求助qwq
查看原帖
求助qwq
1116622
Geranium楼主2025/1/15 12:55

RE12个点

#include<bits/stdc++.h>
#define int long long
using namespace std;
const int maxn=250000+10;
int n,ans,a[maxn],b[maxn],now;
struct node{
	int day,v;
	bool operator<(const node& x) const{
		return v<x.v;
	}
	bool operator>(const node& x) const{
		return v>x.v;
	}
};
priority_queue<node,vector<node>,less<node> > q;
bool vis[maxn];
signed main(){
	cin>>n;
	for(int i=1;i<=n;i++) cin>>a[i];
	for(int i=1;i<=n;i++) cin>>b[i];
	for(int i=1;i<=n;i++){
		now+=a[i];
		if(now>=b[i]){
			now-=b[i]; vis[i]=1;
			q.push(node{i,b[i]}); ++ans; 
		
		}else{
			if(q.top().v>b[i] && !q.empty()){
				vis[q.top().day]=0; vis[i]=1;
				now+=q.top().v-b[i];
				q.pop(); q.push(node{i,b[i]});
			}
		}
	}
	cout<<ans<<endl;
	for(int i=1;i<=n;i++) if(vis[i]) cout<<i<<" ";
	return 0;
}
2025/1/15 12:55
加载中...