这是一份明显错误的代码
#include<bits/stdc++.h>
using namespace std;
typedef long long ll;
const ll N = 15000010;
struct buing{
ll rep,lim;
bool operator <(const buing b) const{
return rep<b.rep;
}
} a[N];
ll n;
priority_queue<buing> q;
ll quin = 0;
bool cmp(buing x,buing y){
return x.lim<y.lim;
}
int main(){
scanf("%lld",&n);
for(ll i = 1; i <= n; i++) scanf("%lld%lld",&a[i].rep,&a[i].lim);
sort(a+1,a+n+1,cmp);
for(ll i = 1; i <= n; i++){
if(quin+a[i].rep<=a[i].lim){
q.push(a[i]);
quin+=a[i].rep;
} else {
buing fir = q.top();
q.pop();//从这一行(这些都应该写下面的 if 里)
if(fir.rep>a[i].rep);//这里多了个;
q.push(a[i]);
quin-=fir.rep;
quin+=a[i].rep;//到这一行
}
}
printf("%lld",q.size());
return 0;
}
这能得 70...