很水的题目
完全对不起他的颜色
按照顺序排一下,然后能放就放,防不了,就把最大的拿出来再说
#include<iostream>
#include<cstring>
#include<cstdio>
#include<algorithm>
#include<queue>
#define int long long
using namespace std;
int n;
int x[100001];
priority_queue <int> q;
struct b{
int pl;
int ti;
} ro[100001];
int m;
int Aimee;
bool cmp(b x,b y){
return x.pl<y.pl;
}
signed main(){
scanf("%lld%lld",&n,&m);
for(int i=1;i<=n;++i){
scanf("%lld%lld",&ro[i].pl,&ro[i].ti);
}
sort(ro+1,ro+n+1,cmp);
for(int i=1;i<=n;++i){
m-=ro[i].pl-ro[i-1].pl;
if(m<0)
break;
if(m>=ro[i].ti){
q.push(ro[i].ti);
m-=ro[i].ti;
Aimee++;
}else{
if(q.empty())
continue;
if(m+q.top()>ro[i].ti){
m=m+q.top()-ro[i].ti;
q.pop();
q.push(ro[i].ti);
}else{
continue;
}
}
}
cout<<Aimee<<endl;
return 0;
}