我这个代码时间和sum是分开算的,但依然需要把入堆放在前面,为啥呢? WAon#13代码:
#include <bits/stdc++.h>
#define int uint64_t
//#define int __int128
//#define MOD (1000000007)
//#define eps (1e-6)
#define endl '\n'
#define debug_endl cout<<endl;
#define debug cout<<"debug"<<endl;
using namespace std;
const int MAXN=1e5+10;
int n,m,ans,sum;
priority_queue<int> q;//选中的房间思考时间之和
struct Room{
int x,t;
}a[MAXN];
bool cmp(Room A,Room B){
return (A.x==B.x?A.t<B.t:A.x<B.x);
};
signed main(){
//freopen(".in","r",stdin);
//freopen(".out","w",stdout);
ios::sync_with_stdio(false);
cin.tie(0),cout.tie(0);
cin>>n>>m;
for(int i=1;i<=n;++i){
cin>>a[i].x>>a[i].t;
}
sort(a+1,a+n+1,cmp);
for(int i=1;i<=n;++i){
sum+=a[i].t;
while(!q.empty()&&sum+a[i].x>m){
sum-=q.top();
q.pop();
}
q.emplace(a[i].t);
ans=max(ans,(int)q.size());
}
cout<<ans;
return 0;
}