#include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include using namespace std; typedef long long ll; const int mod = 1e9 + 7; const ll infll = (1LL << 62) - 1; const int inf = (1 << 30) - 1; #define rep(i,n) for (int i=0; i < (n); i++) typedef double D; // 座標値の型。doubleかlong doubleを想定 typedef complex P; // Point typedef pair L; // Line typedef vector

VP; const D EPS = 1e-9; // 許容誤差。問題によって変える #define X real() #define Y imag() #define LE(n,m) ((n) < (m) + EPS) #define GE(n,m) ((n) + EPS > (m)) #define EQ(n,m) (abs((n)-(m)) < EPS) D dot(P a, P b) { return (conj(a)*b).X; } int main(){ cout << fixed << setprecision(10); int N,K; cin >> N >> K; vectorA(N),B(N); rep(i,N)cin >> A[i] >> B[i]; int L=0,R=(int)1e9+1; while(R-L>1){ int mid=(L+R)>>1; ll cn=0; rep(i,N){ if(A[i]>mid)continue; cn+=min(B[i],mid)-A[i]+1; } if(cn>=K)R=mid; else L=mid; } cout << R << endl; return 0; }