#include<bits/stdc++.h>
using namespace std;
struct node
{
long long a,b;
friend bool operator<(const node &x,const node &y)
{
return x.b<y.b||x.b==y.b&&x.a<y.a;
}
friend bool operator>(const node &x,const node &y)
{
return y<x;
}
};
int cnt,i,n;
long long t;
node nd[150010];
priority_queue<long long,vector<long long>,greater<long long> >pq;
int main()
{
scanf("%d",&n);
for(i=1;i<=n;++i)
{
scanf("%lld%lld",&nd[i].a,&nd[i].b);
if(nd[i].a>nd[i].b)
{
i--;
n--;
}
}
sort(nd+1,nd+n+1);
for(i=1;i<=n;++i)
{
if(t+nd[i].a<=nd[i].b)
{
t+=nd[i].a;
cnt++;
pq.push(nd[i].a);
}
else
{
if(pq.size()&&nd[i].a<pq.top())
{
t-=pq.top()-nd[i].a;
pq.pop();
pq.push(nd[i].a);
}
}
}
printf("%d",cnt);
return 0;
}
结果,悬赏关注