Cod sursa(job #127805)

Utilizator za_wolfpalianos cristian za_wolf Data 25 ianuarie 2008 00:21:45
Problema Buline Scor 60
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.81 kb
#include<stdio.h>
long p,max,poz,lung,x[4000501],b,a,n,m,j,k,l,i,q,w,z,s;
int main()
{
	freopen("buline.in","r",stdin);
	freopen("buline.out","w",stdout);
	scanf("%ld",&n);
	for (i=1;i<=n;i++)
	{
		scanf("%ld%ld",&a,&b);
		if (b==0) x[i]=0-a; else x[i]=a;
		x[n+i]=x[i];
	}
	max=-20001;
	m=0;
	l=0;
	p=1;
	q=n+n;
/*	for (i=1;i<=q;i++)
	{
	l++;
	m+=x[i];
	if (m<0||l>n) {if (m>max&&l<=n) {max=m; lung=l; poz=p; } else if (l>n) i=p; m=0; l=0; p=i+1; }
	else
	{
	if (m>max&&l<=n) {max=m; lung=l; poz=p; }
	}
	}
*/

	for (i=1;i<=q;i++)
	{
	l++;
	m+=x[i];
	if (m<0||l>n) {if (m>max&&l<=n) {max=m; lung=l; poz=p; } else if (l>n) i=p+1; m=0; l=0; p=i+1; }
	else
	{
	if (m>max&&l<=n) {max=m; lung=l; poz=p; }
	}
	}
	if (poz>n) poz=poz-n;
	printf("%ld %ld %ld\n",max,poz,lung);
	return 0;
}