20pts求调
查看原帖
20pts求调
672757
封禁用户楼主2025/7/26 11:20
#include <bits/stdc++.h>
using namespace std;
int n,s;
const int N=250005;
int a[N],b[N],an;
bool bu[N],maxn,maxi;
int 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++)
	{
		if(i==1)
		{
			maxn=b[i],maxi=i;
		}
		s+=a[i];
		if(s>=b[i])
		{
			s-=b[i];
			an++;
			bu[i]=1;
		}	
		else{
			if(!maxi||b[i]>b[maxi])
			{
				continue;
			}
			bu[maxi]=0;
			bu[i]=1;
			s+=b[maxi],s-=b[i];
			maxn=maxi=0;
			for(int j=1;j<=i;j++)
			{
				if(b[i]>maxn)
				{
					maxn=b[i],maxi=i;
				}
			}
		}
	}
	cout<<an<<"\n";
	for(int i=1;i<=n;i++)
	{
		if(bu[i])
		{
			cout<<i<<" ";
		}
	}
	return 0;
}

记录

2025/7/26 11:20
加载中...