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 C (Clang 10.0.0) (judge verdict: Wrong Answer)

#include<stdio.h>
#include<stdlib.h>
#include<string.h>

int sort(int N, int *a, int *b) {
	int goodness;
	int i;
	int temp;
	while(goodness < N - 1) {
		goodness = 0;
		for(i = 0; i < N - 1; i += 1) {
			if(a[i] > a[i + 1]) {
				temp = a[i];
				a[i] = a[i + 1];
				a[i + 1] = temp;
				temp = b[i];
				b[i] = b[i + 1];
				b[i + 1] = temp;
			} else {
				goodness += 1;
			}
		}
	}
	return 0;
}

int main(void) {
	int N, K;
	int *a, *b;
	int i;
	int num_terms;
	char buf[128], *ch;
	//FILE *file;

	//file = fopen("input.txt", "r");

	fgets(buf, sizeof(buf), stdin);
	//fgets(buf, sizeof(buf), file);
	ch = strtok(buf, " ");
	N = atoi(ch);
	ch = strtok(NULL, " ");
	K = atoi(ch);

	a = (int *)calloc(N, sizeof(int));
	b = (int *)calloc(N, sizeof(int));

	for(i = 0; i < N; i += 1) {
		fgets(buf, sizeof(buf), stdin);
		//fgets(buf, sizeof(buf), file);
		ch = strtok(buf, " ");
		a[i] = atoi(ch);
		ch = strtok(NULL, " ");
		b[i] = atoi(ch);
	}
	sort(N, a, b);

	num_terms = 0;
	i = 0;
	while(num_terms < K) {
		num_terms += b[i];
		if(num_terms >= K) {
			printf("%d\n", a[i]);
			break;
		}
		i += 1;
	}
	/*
	printf("%d\n", i);
	if(num_terms == K) {
		printf("%d\n", a[i - 1]);
	} else {
		printf("%d\n", a[i]);
	}
	*/

	free(a);
	free(b);
	//fclose(file);
	return 0;
}