/* -*- coding: utf-8 -*- * * 817.cc: No.817 Coin donation - yukicoder */ #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include using namespace std; /* constant */ const int MAX_N = 100000; const int MAX_M = MAX_N * 2; /* typedef */ typedef long long ll; /* global variables */ int as[MAX_N], bs[MAX_N], xs[MAX_M], ds[MAX_M]; /* subroutines */ /* main */ int main() { int n, k; scanf("%d%d", &n, &k); k--; int m = 0; for (int i = 0; i < n; i++) { scanf("%d%d", as + i , bs + i); xs[m++] = as[i], xs[m++] = ++bs[i]; } sort(xs, xs + m); m = unique(xs, xs + m) - xs; //printf("m=%d\n", m); for (int i = 0; i < n; i++) { int ai = lower_bound(xs, xs + m, as[i]) - xs; int bi = lower_bound(xs, xs + m, bs[i]) - xs; ds[ai]++, ds[bi]--; } for (int i = 1; i < m; i++) ds[i] += ds[i - 1]; //for (int i = 0; i < m; i++) printf("%d ", ds[i]); putchar('\n'); for (int i = 0; i + 1 < m; i++) { int &d = ds[i], l = xs[i + 1] - xs[i]; ll dl = (ll)d * l; if (k >= dl) k -= dl; else { printf("%d\n", xs[i] + k / d); break; } } return 0; }