题目大意:一家店,n天。第i天上午会进货Ai件,中午的时候有顾客购买Bi件,可以选择满足或是无视。问最多能够满足多少个顾客的需求。
题解:闷声贪大心
#include <iostream>
#include <cstdio>
#include <algorithm>
#include <queue>
using namespace std;
priority_queue <pair<int,int> > q;
#define MP(b,i) make_pair<int,int>(b, i)
int n,s;
long long now;
int vis[250005],a[250005],b[250005];
int main()
{
cin>>n;
for(int i=1;i<=n;i++)
scanf("%d",&a[i]);
for(int i=1;i<=n;i++)
scanf("%d",&b[i]);
for(int i=1;i<=n;i++)
{
s++;vis[i]=1;now+=a[i]-b[i];q.push(MP(b[i],i));
if(now<0){vis[q.top().second]=0,now+=q.top().first,q.pop();s--;}
}
cout<<s<<endl;
for(int i=1;i<=n;i++)
if(vis[i]) printf("%d ",i);
return 0;
}