求助80
查看原帖
求助80
930327
chenzher楼主2023/9/25 20:04
#include<bits/stdc++.h>
using namespace std;
int n,ans=0,h=0;
int a[100010];
int s[100010];
int f[100010];
void qsort(int l,int r)
{
	int mid=f[(l+r)/2],x=l,y=r;
	while(l<=r)
	{
		while(f[l]<mid) l++;
		while(f[r]>mid) r--;
		if(l<=r)
		{
			f[0]=f[l];
			f[l]=f[r];
			f[r]=f[0];
			l++;
			r--;
		}
	}
	if(x<r) qsort(x,r);
	if(l<y) qsort(l,y);
}
int main()
{
	scanf("%d",&n);
	for(int i=1;i<=n;i++)
	{
		scanf("%d",&s[i]);
		s[i]*=2;
	}
	for(int i=1;i<=n;i++)
	{
		scanf("%d",&a[i]);
		if(s[i]+a[i]>=ans)
		{
			ans=s[i]+a[i];
			h=i;
		}
	}
	for(int i=1;i<=n;i++)
	{
		if(i!=h)
		{
			if(s[h]<s[i])
			{
				f[i]=s[i]-s[h]+a[i];
			}
			else
			{
				f[i]=a[i];
			}
		}
	}
	qsort(1,n);
	for(int i=n;i>=1;i--)
	{
		printf("%d\n",ans);
		ans+=f[i];
	}
	return 0;
}
2023/9/25 20:04
加载中...