Cod sursa(job #214514)

Utilizator SheepBOYFelix Liviu SheepBOY Data 14 octombrie 2008 22:04:04
Problema Buline Scor 0
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.98 kb
#include<stdio.h>
int n,rst=0,v[20000],t[20000],p[20000],l[20000];
void setvalues()
{
	int reseted=0,starter=1,i,nores=0;
	long long sum=0, max=-10000;
	int etln=0;
	for(i=1;i<=n;i++)
	{
		sum+=v[i];
		t[i]=sum;
		p[i]=starter;
		etln++;
		l[i]=etln;
		if(v[i]>-1)
			nores=1;
		if(sum<=0&&nores)
		{if(!rst)
			rst=i;
			starter=i+1;
			reseted++;
			sum=0;
			etln=0;
		//	if(t[i]-v[i]<t[i])
		//	{
		//		t[i]-=v[i];
		//		l[i]--;
		//	}
		}
	}
}
int main()
{
	int i,x;
	long long max=-10000;
	int ps,lg;
	freopen("buline.in","r",stdin);
	freopen("buline.out","w",stdout);
    scanf("%d",&n);
	for(i=1;i<=n;i++)
	{
		scanf("%d%d",(v+i),&x);
		if(!x)
			v[i]=-v[i];
	}
	setvalues();
	ps=lg=0;
	int ti=0;
	for(i=1;i<=rst;i++)
	{
		
		if(t[i]>max)
		{
			max=t[i];
			ps=p[i];
			lg=l[i];
		}
if(t[i]+t[n]>max)
	{
		max=t[i]+t[n];
		ps=p[n];
		lg=l[i]+l[n];
	}
	}
	printf("%lld ",max);
	printf("%d ",ps);
	printf("%d",lg);
	return 0;
}