128AC - ABC061C: Big Array

ABC061-C (300 points)
問題

空の配列に対して, 整数を挿入する操作を  N 回行う. ただし,  i (1 \leq i \leq N) 回目の操作では, 配列に整数  a_i b_i 個挿入する.
 N 回の挿入操作後の配列の中で,  K 番目に小さい数を求める.
例えば, 配列  \{ 1, 2, 2, 3, 3, 3 \} のとき,  4 番目に小さい数は  3 である.

  •  1 \leq N \leq 10^5
  •  1 \leq a_i, b_i \leq 10^5
  •  1 \leq K \leq \sum b_i
  • 入力は全て整数
方針
  • 出来上がった配列を昇順にソートして  K 番目の数を取り出せば良い.
  •  a_i を小さい順に配列に挿入して,  K 番目まで挿入した時点で止めても同じ.
# input
N, K = map(int, input().split())
A = [list(map(int, input().split())) for _ in range(N)]

A = sorted(A)

count = 0

for i in range(N):
    count += A[i][1]
    if count >= K:
        print(A[i][0])
        break