Pagini recente » Cod sursa (job #2209703) | Cod sursa (job #2250119) | Cod sursa (job #2968820) | Monitorul de evaluare | Cod sursa (job #2079067)
#include <fstream>
using namespace std;
ifstream f("buline.in");
ofstream g("buline.out");
int n,v[200005],x,i,s[400005],smax,imax,lmin,l;
struct
{
int a,poz;
}t[400005];
int main()
{f>>n;
for(i=1;i<=n+n-1;i++)
{
if(i<=n)
{
f>>v[i]>>x;
if(x==0)v[i]=-v[i];
s[i]=s[i-1]+v[i];
}
else
{
s[i]=s[i-1]+v[i-n];
}
t[i]=t[i-1];
if(t[i].a<s[i] || t[i].poz==0){t[i].a=s[i];t[i].poz=i;}
}
smax=0;
for(i=1;i<=n+n-1;i++)
{
if(smax<s[n]-s[i-1]+t[i-1].a){smax=s[n]-s[i-1]+t[i-1].a;imax=i;}
if(smax==s[n]-s[i-1]+t[i-1].a && imax==i)
{
l=n-(i-t[i-1].poz)+1;
if(l<lmin || lmin==0)lmin=l;
}
}
g<<smax<<" "<<imax<<" "<<lmin;
return 0;
}