Cod sursa(job #329960)

Utilizator Alexa_ioana_14Antoche Ioana Alexandra Alexa_ioana_14 Data 8 iulie 2009 11:35:09
Problema Buline Scor 20
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.86 kb
#include<cstdio>
#define N 400002
short int v[N];
int n,max=-N/2,pi,p,l;
void citire()
{
	freopen("buline.in","r",stdin);
	freopen("buline.out","w",stdout);
	scanf("%d",&n);
 	for (int i=1; i<=n; ++i)
	{
		short int c;
		scanf("%hd%hd",&v[i],&c);
		if (!c) v[i]*=-1;
		v[i+n]=v[i];
	}
	v[n+n]=0;
}
void sume()
{
	int cn=n+n-1,s=0,num=0,pi=1;
	for (int i=1; i<=cn; ++i)
	{
		++num;
		s+=v[i];
		if (s>max)
		{
			max=s;
			p=pi;
			l=num;
		}
		else 
			if (s==max)
				if (pi>n)
				{
					pi-=n;
					if (!pi) pi=n;
					if (pi<p)
					{
						p=pi;
						l=num;
					}
					else
						if (pi==p)
							if (l>num)
								l=num;
				}
		if (s<0)
		{
			num=0;
			s=0;
			pi=i+1;
		}
		if (num==n)
		{
			s=0;
			num=0;
			pi=i+1;
		}
	}
	printf("%d %d %d",max,p,l);
}
int main()
{
	citire();
	sume();
	return 0;
}