#include #include #include #include #include #include #include #include #include #include #include #include #include using namespace std; #define REP(i,n) for(int (i)=0;(i)<(int)(n);(i)++) #define RREP(i,n) for(int (i)=(int)(n)-1;i>=0;i--) #define iREP(i,Itr) for(auto (i)=(Itr).begin();(i)!=(Itr).end();(i)++) #define REMOVE(Itr,n) (Itr).erase(remove((Itr).begin(),(Itr).end(),n),(Itr).end()) #define UNIQUE(Itr) sort((Itr).begin(),(Itr).end()); (Itr).erase(unique((Itr).begin(),(Itr).end()),(Itr).end()) #define LBOUND(Itr,val) lower_bound((Itr).begin(),(Itr).end(),(val)) #define UBOUND(Itr,val) upper_bound((Itr).begin(),(Itr).end(),(val)) typedef long long ll; int main(){ int N,M; cin>>N>>M; vector L(N),R(N); REP(i,N)cin>>L[i]>>R[i]; ll sum=0; REP(i,N)sum+=abs(L[i]-R[i])+1; if(sum>M){ cout<<"NO"< > > dist; int center=((M%2==0)?M/2:M/2+1); REP(i,N){ dist.push_back(make_pair(min(abs(L[i]-center),abs(R[i]-center)),make_pair(L[i],R[i]))); } sort(dist.begin(),dist.end()); //REP(i,N)cout<