#include #include using lint = long long; int main() { lint N, K; std::cin >> N >> K; std::vector A(N), B(N); for (int i = 0; i < N; ++i) { std::cin >> A[i] >> B[i]; } int ng = 0, ok = 1e9 + 1; // ok以下の硬貨がK枚以上 while (ok - ng > 1) { int mid = (ok + ng) / 2; lint cnt = 0; for (int i = 0; i < N; ++i) { cnt += std::max(0, std::min(B[i], mid) - A[i] + 1); } (cnt >= K ? ok : ng) = mid; } std::cout << ok << std::endl; return 0; }