Cod sursa(job #130639)

Utilizator razvi9Jurca Razvan razvi9 Data 1 februarie 2008 16:48:30
Problema Buline Scor 20
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.68 kb
#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;}