#include using namespace std; int main(void) { int n, k; cin >> n >> k; int a[n], b[n]; for ( int i = 0; i < n; i++ ) { cin >> a[i] >> b[i]; } int u = 1000000001, d = 1; // 二部探索 while ( u - d > 1 ) { int mid = (u + d)/2; long long sum = 0; for ( int i = 0; i < n; i++ ) { if ( a[i] > mid ) // 𝐴 円玉以下である硬貨が 𝐾 枚以上存在しない continue; sum += min(b[i] + 1, mid) - a[i]; } if(sum >= k) u = mid; // 𝐴 円玉以下である硬貨が 𝐾 枚以上存在するので境界値を出力 else d = mid; } cout << d << endl; }