만드는 중입니다

아직 만드는 중이라 바뀔 수 있습니다

유리병 속 무한히 터지는 기포

시간 제한3초메모리 제한1024 MB

요약
N개 구역으로 나뉜 유리병에서 T초 동안 기포가 생기고 위아래로 퍼지는 과정을 시뮬레이션하여 매초 남은 기포 수를 구합니다.
난이도

보통10점 중 6점

유형
시뮬레이션, 배열, 세그먼트 트리
정답자
아직 제출이 없습니다

문제

너에게서는 멸종된 과일 향기가 난다

투룸 신축 빌라 보증금 이천에 월세 구십, 어떻게 해야 너를 웃길 수 있을까 하는 생각, 두 시간 동안의 폭우, 일주일 동안의 아침, 유리병 속 무한히 터지는 기포

-고선경, [샤워젤과 소다수]

세로로 길쭉한 유리병 하나가 있다. 이 속에서 기포가 무한히 터지고 있다.

과학자 정우는 이 현상에 호기심을 느끼고 계속 관찰했다. 그 결과 다음 사실을 알아냈다. 먼저 유리병을 세로로 NN등분해서, 가장 아래의 11번 구역부터 가장 위의 NN번 구역까지 총 NN개의 구역으로 나눌 수 있다. 각 구역에는 최대 MM개의 기포가 있을 수 있다. 처음에는 어느 구역에도 기포가 없다. 1초마다 유리병 안에서 다음 두 현상이 이 순서대로 번갈아 일어난다.

  • 기포 생성: 유리병 안의 구역 하나에서 기포가 생성된다. ii번째 기포 생성 때 yiy_i번 구역에서 kik_i개의 기포가 생성된다. 그 구역에 원래 있던 기포 수와 새로 생긴 기포 수의 합이 MM을 넘으면 MM개만 남고 나머지 기포는 모두 사라진다.
  • 기포 이동: 모든 구역의 기포가 동시에 위 또는 아래로 움직인다. ii번 구역에 aia_i개의 기포가 있으면, ⌊ai5⌋\left\lfloor\frac{a_i}{5}\right\rfloor개는 바로 위 구역으로, ⌊ai5⌋\left\lfloor\frac{a_i}{5}\right\rfloor개는 바로 아래 구역으로 이동하고, ⌊ai5⌋\left\lfloor\frac{a_i}{5}\right\rfloor개는 제자리에 남으며, 나머지 기포는 사라진다. 11번 구역의 아래나 NN번 구역의 위로 움직이려는 기포는 사라진다. 이동 후 어느 구역의 기포 수가 MM을 넘으면 MM개만 남고 나머지 기포는 모두 사라진다.

그림 1. (a) 유리병을 NN개의 구역으로 나눈 모습. (b) 11번 구역과 NN번 구역에서 각각 기포가 이동하는 모습.

정우는 유리병 속 기포의 움직임을 모델링하는 프로그램을 만들려 한다. tt초가 지난 뒤, 즉 기포 생성과 기포 이동이 각각 tt번 일어난 뒤 유리병 속에 남은 기포의 총수를 S(t)S(t)라 하자. 관찰 시간 TT가 주어질 때, S(1),S(2),⋯ ,S(T)S(1), S(2), \cdots, S(T)의 값을 구하시오.

입력

첫째 줄에 유리병을 이루는 구역의 수 NN, 각 구역에 존재할 수 있는 기포의 최대 수 MM, 관찰 시간 TT가 공백으로 구분되어 주어진다. (1≤N≤100 0001 \leq N \leq 100\,000, 1≤M≤100 0001 \leq M \leq 100\,000, 1≤T≤50 0001 \leq T \leq 50\,000)

둘째 줄부터 TT개의 줄에 걸쳐, ii번째 기포 생성에 대해 기포가 생성되는 구역의 번호 yiy_i와 그 구역에서 생성되는 기포의 수 kik_i가 공백으로 구분되어 주어진다. (1≤yi≤N1 \leq y_i \leq N, 0≤ki≤M0 \leq k_i \leq M)

출력

TT개의 줄에 걸쳐, ii번째 줄에 S(i)S(i)의 값을 출력한다.

힌트

⌊x⌋\lfloor x \rfloor는 바닥 함수로, 주어진 실수 xx 이하의 최대 정수를 나타낸다.

예제2

  1. 예제 1

    입력
    6 100 6
    3 20
    2 40
    4 60
    3 80
    1 100
    5 100
    
    예상 출력
    12
    24
    44
    66
    73
    92
    
  2. 예제 2

    입력
    6 100 2
    1 100
    1 100
    
    예상 출력
    40
    52