rt,调不出来。
代码:
#include<bits/stdc++.h>
#define int long long
using namespace std;
int n,m;
int day,ans,ans1;
bool vis[300010];
struct node{
int a,xb,b;
bool operator <(const node &hzx)const{
return b>hzx.b;
}
bool operator >(const node &hzx)const{
return b<hzx.b;
}
}a[300010];
priority_queue<node>q;
signed main(){
scanf("%lld",&n);
for(int i=1;i<=n;i++){
scanf("%lld",&a[i].a);
a[i].xb=i;
}
for(int i=1;i<=n;i++){
scanf("%lld",&a[i].b);
a[i].xb=i;
}
for(int i=1;i<=n;i++){
m+=a[i].a;
if(a[i].b<=m){
vis[i]=1;
q.push(a[i]);
ans++;
m-=a[i].b;
}
else if(!q.empty()&&a[i].b<q.top().b){
vis[a[i].xb]=0;
vis[i]=1;
m+=q.top().b-a[i].b;
q.pop();
q.push(a[i]);
}
}
printf("%lld\n",ans);
for(int i=1;i<=n;i++){
if(vis[i]) printf("%lld ",i);
}
return 0;
}