#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