시간 제한
메모리 제한
시간 제한
2초
메모리 제한
128 MB
동호는 월드 고등학교의 학생이다. 동호는 학교에서 총 N개의 시험을 보았다. i번째 시험에서 동호가 받은 점수는 T_i이고, 그 시험의 만점은 P_i이다.
여러 시험을 합산한 성적은 선택된 시험들의 T_i 합을 P_i 합으로 나눈 값이다. 예를 들어 점수가 1/2, 5/9, 3/8, 4/10, 1/3이라면 전체 성적은 (1+5+3+4+1)/(2+9+8+10+3) = 14/32 ≈ 0.44이다.
담임 선생님은 동호의 성적을 조금 올려 주기 위해, 동호가 본 N개의 시험 중 백분율 T_i/P_i가 가장 작은 D개의 시험을 제외하고 나머지 N-D개의 시험만으로 성적을 계산하려 한다. 위의 예에서 D=1이면 1/3이 가장 작으므로 이를 제외하고, 성적은 (1+5+3+4)/(2+9+8+10) = 13/29 ≈ 0.45가 된다.
하지만 동호는 D개의 시험을 제외할 수 있다면 반드시 백분율이 가장 작은 시험들을 제외하는 것이 최선은 아니라고 주장한다. 같은 예에서 D=1일 때 1/3 대신 3/8을 제외하면 성적은 11/24 ≈ 0.46이 되어 더 높다.
시험 점수가 주어졌을 때, 백분율이 가장 작은 D개의 시험을 제외하는 것보다 다른 D개의 시험을 제외해서 성적을 더 높일 수 있는 모든 D를 구하는 프로그램을 작성하라.
첫째 줄에 시험의 개수 N이 주어진다. (1 ≤ N ≤ 50,000)
둘째 줄부터 N개의 줄에 걸쳐 각 시험의 점수 T_i와 만점 P_i가 공백으로 구분되어 주어진다. (0 ≤ T_i ≤ P_i ≤ 40,000, 0 < P_i)
첫째 줄에 조건을 만족하는 D의 개수 K를 출력한다. (0 ≤ K ≤ N)
이어서 K개의 줄에 조건을 만족하는 D를 오름차순으로 하나씩 출력한다.