페이지가 로드되지 않나요? 여기를 눌러보면 고쳐질 수도 있어요.
Placeholder

#5917

접시 닦기 1초 128MB

문제

설거지는 씻기와 건조하기의 총 두 단계에 걸쳐 진행된다.

정올이의 주방에는 접시를 쌓을 수 있는 공간이 세 군데 있다.

  • 첫 번째 공간은 설거지가 필요한 접시들이 쌓여있는 공간이고,

  • 두 번째 공간은 씻겨진 접시가 쌓일 공간이며,

  • 세 번째 공간은 건조가 끝난 접시가 쌓일 공간이다.

첫 번째 공간에는 1부터 N까지 번호가 매겨진 N개의 접시가 번호가 큰 접시부터 낮은 접시까지 아래에서 위로 쌓여있다.

정올이는 i분에 그 중 D_i개의 접시를 씻어서 두 번째 공간에 쌓거나, D_i개의 씻긴 접시를 건조시켜 세 번째 공간에 쌓는다.

여러 개의 접시를 같은 시간대에 작업한다고 해도 한 번에 하나의 접시씩 작업을 해야하기에 접시는 한 번에 하나씩 꺼내어 작업하고 다음 공간에 쌓인다.

예를 들어 N=5개의 접시가 있다면 아래와 같은 상황으로 시작된다.

1 |   | 
2 |   | 
3 |   | 
4 |   | 
5 |   | 

1분에 3개의 접시를 씻게 된다면 아래와 같이 변한다.

  |   | 
  |   | 
  | 3 | 
4 | 2 | 
5 | 1 | 

2분에 2개의 접시를 건조하게 된다면 아래와 같이 변한다.

  |   | 
  |   | 
  |   | 
4 |   | 2
5 | 1 | 3

3분에 2개의 접시를 씻게 된다면 아래와 같이 변한다.

  |   | 
  |   | 
  | 5 | 
  | 4 | 2
  | 1 | 3

4분에 3개의 접시를 건조하게 된다면 아래와 같이 변한다.

  |   | 1
  |   | 4
  |   | 5
  |   | 2
  |   | 3

접시의 개수 N과 각 시간대별로 정올이의 행동이 입력으로 주어졌을 때, 최종적으로 접시 닦기가 완료된 접시들의 번호를 위에서부터 아래까지 쌓인 순서대로 출력하는 프로그램을 작성하시오.


입력

첫 줄에 접시의 개수 N과 총 시간 T가 주어진다. (1 \le N,T \le 10,000)

두 번째 줄부터 T 줄에 걸쳐 그 중 i번째 줄에 C_iD_i가 주어진다.

C_i=1의 경우, 접시를 씻어서 두 번째 공간으로 옮기는 작업을 의미하고,

C_i=2의 경우, 접시를 건조해 세 번째 공간으로 옮기는 작업을 의미하며,

D_i는 그 때 작업하는 접시의 수를 의미한다.

  • 모든 입력이 끝나면 모든 접시 닦기가 완료됨이 보장된다.

  • 각 작업을 실행할 수 있음이 보장된다.


출력

N줄에 걸쳐 접시 닦기가 완료된 접시의 번호를 위에서부터 아래로 순서대로 출력한다.


예제1

입력
54
13
22
12
23
출력
1
4
5
2
3

문제의 예시와 동일하다.


태그


출처

USACO 2011 January Bronze

역링크