Problem:
Score : 300 points

Problem Statement

There is an empty array.
The following N operations will be performed to insert integers into the array.
In the i-th operation (1≤i≤N), b_i copies of an integer a_i are inserted into the array.
Find the K-th smallest integer in the array after the N operations.
For example, the 4-th smallest integer in the array \{1,2,2,3,3,3\} is 3.

Constraints

1≤N≤10^5

1≤a_i,b_i≤10^5

1≤K≤b_1…+…b_n

All input values are integers.

Input

Input is given from Standard Input in the following format:

N K
a_1 b_1
:
a_N b_N

Output

Print the K-th smallest integer in the array after the N operations.

Sample Input 1

3 4
1 1
2 2
3 3

Sample Output 1

3

The resulting array is the same as the one in the problem statement.

Sample Input 2

10 500000
1 100000
1 100000
1 100000
1 100000
1 100000
100000 100000
100000 100000
100000 100000
100000 100000
100000 100000

Sample Output 2

1

Solution in PHP (5.6.30) (judge verdict: Accepted)

<?php
error_reporting(0);
$stdin = file_get_contents('php://stdin');
$line = explode("\n",$stdin);
$fi = 0;
$cnt = 0;
$list = array();
$key = new stdclass();
foreach($line as $l) {
  if (strlen($l)==0) continue;
  if ($fi == 0) {
    $a = explode(" ",$l);
    $key->A = $a;
    $fi++;
    continue;
  }
  if ($fi > 0) {
    $a = explode(" ",$l);
    $key->X[] = $a;
  }
}
$N = $key->A[0];
$K = $key->A[1];
$ary = array();
$cnt=0;
$res=0;
$ary=array();
//K番目の数ではなくK番目に小さい数
foreach($key->X as $r) {
  $ary[$r[0]]+=$r[1];
}
ksort($ary);
if ($K <= count($ary)) {
  //出てきた数値の個数以下なら
  //配列のキーから取り出せる
  $cnt=1;
  while($c = current($ary)) {
    if ($K == $cnt) {
      printf("%d\n",key($ary));
      exit;
    }
    next($ary);
    $cnt++;
  }
}
else {
  //出てきた個数の数値より大きければ
  //何番目になるのか数える必要がある
  $cnt=0;
  foreach($ary as $k => $v) {
    if ($K <= ($cnt + $v)) {
      printf("%d\n",$k);
      exit;
    }
    $cnt+=$v;
  }
}