Cod sursa(job #257063)

Utilizator anna_bozianuBozianu Ana anna_bozianu Data 12 februarie 2009 19:01:43
Problema Buline Scor 20
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.79 kb
#include<stdio.h>
int n,i,v[400010],s,ok,M,P,L,l,p,u;
void readd(),solve();
int main()
{
	readd();
	solve();
	return 0;
}
void readd()
{
	freopen("buline.in","r",stdin);
	freopen("buline.out","w",stdout);
	scanf("%d",&n);
	for(i=1;i<=n;i++)
	{
		scanf("%d%d",&v[i],&s);
		if(!s)v[i]=-v[i];
		else if(v[i])ok=1;
	}
}
void solve()
{
	if(!ok)
	{
		P=1;L=1;M=v[1];
		for(i=2;i<=n;i++)
			if(v[i]>M){P=i;M=v[i];}
	}
	else
	{   for(i=1;i<=n;i++)v[i+n]=v[i];
		p=1;l=1;u=1;s=v[1];P=1;L=1;M=v[1];
		for(;;)
		{
			if(p==n+1)break;
			if(l==n+1){s-=v[p];p++;l--;continue;}
			if(!l){u++;s=v[p];l++;continue;}
			if(s<0){s-=v[p];p++;l--;continue;}
			if(s==0){u++;l++;s+=v[u];continue;}
			if(s>M){P=p;L=l;M=s;}
			u++;l++;s+=v[u];
		}
	}
	printf("%d %d %d\n",M,P,L);
}