Pagini recente » Cod sursa (job #1822143) | Cod sursa (job #2308185) | Cod sursa (job #1045385) | Cod sursa (job #1557681) | Cod sursa (job #130639)
Cod sursa(job #130639)
#include<cstdio>
int n,a[400000],i,x,y,s[400000],l[400000],s1,p,l1;
int main()
{freopen("buline.in","r",stdin);
freopen("buline.out","w",stdout);
scanf("%d",&n);
for(i=1;i<=n;i++){
scanf("%d %d",&x,&y);
a[i]=y?x:-x;}
for(i=n+1;i<2*n;i++) a[i]=a[i-n];
s[1]=a[1];l[1]=1;
for(i=2;i<=2*n-l[n];i++)
if(s[i-1]+a[i]>a[i]) s[i]=s[i-1]+a[i],l[i]=l[i-1]+1;
else s[i]=a[i],l[i]=1;
s1=s[1];l1=l[1];p=1;
for(i=2;i<=2*n-l[n];i++)
if(s[i]>s1) s1=s[i],p=i-l[i]+1,l1=l[i];
else if(s[i]==s1)
if (i-l[i]+1<p) s1=s[i],p=i-l[i]+1,l1=l[i];
else if(i-l[i]+1==p)
if(l[i]<l1) s1=s[i],p=i-l[i]+1,l1=l[i];
printf("%d %d %d\n",s1,p,l1);
fclose(stdout);
return 0;}