Pagini recente » Cod sursa (job #1019215) | Cod sursa (job #2956882) | Cod sursa (job #3218207) | Cod sursa (job #1780087) | Cod sursa (job #1846464)
#include <cstdio>
using namespace std;
int v[400000];
int main()
{
int n,st,dr,smax,s,l,lmin,P,an;
scanf("%d",&n);
for(st=1 ; st<=n ; st++)
{
scanf("%d%d", &v[st], &an);
if(an==0)
v[st]=0-v[st];
v[st+n]=v[st];
}
lmin=n+n+1;
s=0,smax=v[1];
for(st=dr=1 ; dr<=n+n ; dr++)
{
s+=v[dr];
l=dr-st+1;
if(s>smax && l<=n)
{
smax=s;
lmin=l;
P=st;
}
while(st<=dr && s>=smax)
{
l=dr-st+1;
if(s>smax && l<=n)
{
smax=s;
lmin=l;
P=st;
break;
}
if(l<lmin)
lmin=l, P=st;
s-=v[st];
st++;
}
}
printf("%d %d %d", smax, P, lmin);
return 0;
}