Cod sursa(job #503666)

Utilizator voicuraduVoicu Radu voicuradu Data 24 noiembrie 2010 11:29:19
Problema Buline Scor 20
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.75 kb
#include<cstdio>
using namespace std;
int n,i,stmax,stc,sc,smax,lmax,l,ciclu,x,semn,v[200010];
void read()
{
	freopen("buline.in","r",stdin);
	freopen("buline.out","w",stdout);
	scanf("%d",&n);
	for(i=1;i<=n;i++)
	{
		scanf("%d%d",&x,&semn);
		if(semn)
			v[i]=x;
		else
			v[i]=-1*x;
	}
}

void rez()
{
	stc=1;
	smax=-2000000000;
	sc=0;
	stmax=1;
	lmax=ciclu=0;
	for(i=1;i<=n+n;++i)
	{
		if(i>n)
		{
			i%=n;
			ciclu=1;
		}
		x=v[i];
		if(sc<0)
		{
			sc=0;
			stc=i;
			l=0;
		}
		if(!l && ciclu)
			break;
		sc+=x;
		l++;
		if(ciclu && l>=n)
			break;
		if(sc>smax || l==n)
		{
			smax=sc;
			stmax=stc;
			lmax=l;
		}
	}
	printf("%d %d %d\n",smax,stmax,lmax);
}

int main()
{
	read();
	rez();
	return 0;
}