hack
查看原帖
hack
1217099
lonelysxy楼主2025/1/2 20:26
#include<bits/stdc++.h>
using namespace std;
#define int long long
const int N=1e5+20;
int n;
int a[N];
int b[N];
int ans=0;
int mx=0,idx;
priority_queue<int>ll;
priority_queue<pair<int,int>>rr;
signed main()
{
	ios::sync_with_stdio();
	cin.tie(0),cout.tie(0);
	cin>>n;
	for(int i=1;i<=n;i++)cin>>a[i];
	for(int i=1;i<=n;i++)
	{
		cin>>b[i];
		int gg=b[i]+a[i]*2;
		if(mx<gg)mx=gg,idx=a[i];
	}
	ans=mx;
	for(int i=1;i<=n;i++)
	{
		if(a[i]<idx)ll.push(b[i]);
		if(a[i]>idx)rr.push(make_pair(b[i],a[i]));
	}
	cout<<ans<<endl;
	while(1)
	{
		if(ll.empty()&&rr.empty())break;
		if(!ll.empty()&&!rr.empty())
		{
			int gg=rr.top().first;
			int mm=rr.top().second;
			int zz=ll.top();
			int f=0;
			if(mm>idx)f=mm*2-idx*2;
			if(f+gg>=zz)
			{
				ans+=f+gg;
				if(f)idx=mm;
				rr.pop();
			}
			else
			{
				ans+=zz;
				ll.pop();
			}
			cout<<ans<<endl;
			continue;
		}
		if(ll.empty())
		{
			int gg=rr.top().first;
			int mm=rr.top().second;
			int f=0;
			rr.pop();
			if(mm>idx)f=mm*2-idx*2;
			if(f)idx=mm;
			ans+=f+gg;
			cout<<ans<<endl;
			continue;
		}
		if(rr.empty())
		{
			int gg=ll.top();
			ll.pop();
			ans+=gg;
		}
		cout<<ans<<endl;
	}
	return 0;
}

hack:输入:

5
1 1 1 1 1
1 1 1 1 1

输出:

3

应输出:

3
4
5
6
7
2025/1/2 20:26
加载中...