만드는 중입니다

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

마라톤

면접 대비

시간 제한0.2초메모리 제한256 MB

요약
서로 다른 좌표에 있는 무리가 크기에 반비례하는 속도로 오른쪽으로 달리다 만나면 합쳐진다. 더 이상 합쳐지지 않을 때까지 시뮬레이션한 뒤 최종 무리의 크기를 왼쪽부터 출력한다.
난이도

보통10점 중 6점

유형
스택, 시뮬레이션, 정렬, 구현
정답자
아직 제출이 없습니다

문제

장거리 달리기를 시작했다. 선수들이 달리는 도로는 곧게 뻗은 무한한 직선이라고 하자. 어느 순간 선수들은 nn개의 그룹으로 나뉘었다. ii번 그룹은 kik_i명으로 이루어져 있고 좌표 xix_i에 있다. DD명으로 이루어진 그룹은 좌표가 커지는 방향으로 속력 100D\frac{100}{D}로 달린다. 인원이 많은 그룹일수록 느리다.

어떤 그룹이 바로 앞 그룹을 따라잡으면 두 그룹은 즉시 하나로 합쳐진다. 합쳐진 그룹의 인원은 두 그룹의 인원을 더한 값이고, 속력도 새 인원에 맞게 바뀐다. 세 그룹 이상이 같은 순간에 합쳐지기도 한다.

도로가 무한하므로 어느 순간부터는 더 이상 합쳐지지 않는다. 마지막에 남는 그룹의 개수와 각 그룹의 인원을 구하시오.

입력

첫째 줄에 정수 nn이 주어진다 (1≤n≤1051 \le n \le 10^5). 다음 nn개 줄에는 그룹 하나의 인원 kik_i와 좌표 xix_i가 주어진다 (1≤ki≤1001 \le k_i \le 100, xix_i는 소수점 아래 최대 세 자리까지 주어지는 실수이고 ∣xi∣≤104|x_i| \le 10^4). 모든 좌표는 서로 다르고, 그룹은 순서와 상관없이 주어진다.

출력

첫째 줄에 남은 그룹의 개수 mm을 출력한다. 둘째 줄에 남은 그룹의 인원을 많은 것부터 적은 것 순으로, 즉 증가하지 않는 순서로 공백 하나씩 두고 출력한다. 합쳐질 그룹이 더 없는 상태에서는 뒤에 있는 그룹의 인원이 앞 그룹보다 적지 않으므로, 이 순서는 좌표가 작은 그룹부터 큰 그룹까지 늘어놓은 순서와 같다.

예제3

  1. 예제 1

    입력
    4
    1 0
    2 9000
    4 1
    3 10000
    
    예상 출력
    2
    5 5
    
  2. 예제 2

    입력
    2
    1 -10000.000
    2 10000.000
    
    예상 출력
    1
    3
    
  3. 예제 3

    입력
    3
    7 -5.500
    3 0
    2 4.250
    
    예상 출력
    3
    7 3 2