본문 바로가기
IT/BOJ

백준(BOJ) 15804 저거 못타면 지각이야!! **

by 빨강자몽 2018. 6. 15.

# 단순 구현 # 자료 구조


반복문 횟수를 실수해서 몇번 제출 하였지만 어려운 문제는 아닌것 같다.


#include <iostream>
#include <algorithm>
#include <queue>
#pragma warning(disable:4996)
using namespace std;
typedef pair<int, int> pi;
struct st{
    int pos;
    int fi;
};
deque<st> dq;
int park,bus,cur=1;
pi p[1005];

int main()
{
    scanf("%d%d",&park,&bus);
    for(int i=1;i<=bus;i++)
        scanf("%d%d",&p[i].first,&p[i].second);
    for(int i=1;i<1005;i++)
    {
        while(!dq.empty()&&dq.front().fi<=i)
            dq.pop_front();
        // 정차시간이 지난 버스를 큐에서 빼준다.
        while((dq.empty()||dq.back().pos<park)&&p[cur].first<=i)
        {
            st s;
            if(dq.empty()) s={1,i+p[cur].second};
            else s={dq.back().pos+1,i+p[cur].second};
            if(cur==bus)
            {
                printf("%d",s.pos);
                return 0;
            }
            dq.push_back(s);
            cur++;
        }
        // 조건에 충족하는 버스를 큐에 넣어준다.
    }
    return 0;
}