Cod sursa(job #329969)

Utilizator Alexa_ioana_14Antoche Ioana Alexandra Alexa_ioana_14 Data 8 iulie 2009 12:11:35
Problema Buline Scor 30
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.79 kb
#include<cstdio>
#define N 400002
short int v[N];
int n,max=-N/2,pi,p,l,s[N];
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];
		s[i]=s[i-1]+v[i];
	}
	v[n+n]=0;
	for (int i=n+1; i<=n+n-1; ++i)
		s[i]=s[i-1]+v[i];
}
void sume()
{
	for (int i=1; i<=n; ++i)
	{
		int j=i;
		while (j-i+1<=n)
		{
			int w=s[j]-s[i-1];
			if (max<w)
			{
				max=w;
				p=i;
				l=j-i+1;
			}
			else
				if (max==w){
				if (p>i)
				{
					p=i;
					l=j-i+1;
				}}
				else
					if (p==i){
					if (l>j-i+1)
						l=j-i+1;}
			++j;
		}
	}
	printf("%d %d %d",max,p,l);
}
int main()
{
	citire();
	sume();
	return 0;
}