Pagini recente » Cod sursa (job #32315) | Cod sursa (job #611223) | Cod sursa (job #1820474) | Cod sursa (job #570592) | Cod sursa (job #2170710)
#include <iostream>
using namespace std;
const int nmax=1e5+3;
long long n,t[nmax],v[nmax],mn,st,dr,mij,sol,ad[nmax],mars[nmax],act;
int main()
{
cin>>n;
for(int i=1;i<=n;++i) cin>>v[i];
for(int i=1;i<=n;++i)
{
cin>>t[i];
t[i]+=t[i-1];
}
for(int i=1;i<=n;++i)
{
mn=t[i-1];
st=i-1;
dr=n;
while(st<=dr)
{
mij=(st+dr)/2;
if(t[mij]-mn<=v[i])
{
sol=mij;
st=mij+1;
continue;
}
else
{
dr=mij-1;
continue;
}
}
ad[sol+1]+=v[i]-t[sol]+mn;
++mars[i];
--mars[sol+1];
}
for(int i=1;i<=n;++i) mars[i]+=mars[i-1];
for(int i=1;i<=n;++i)
{
act=mars[i]*(t[i]-t[i-1])+ad[i];
cout<<act<<' ';
}
return 0;
}