Cod sursa(job #797952)

Utilizator BlackLordFMI Alex Oprea BlackLord Data 15 octombrie 2012 12:19:40
Problema Buline Scor 0
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.98 kb
#include <fstream>
#include <algorithm>
using namespace std;
ifstream f("buline.in");
ofstream g("buline.out");
int n, s, se, v[400010], c, x, maxim, l, p, i, m, lm, pm, a[400010];
int main(){
	f>>n;
	for(i=1; i<=n; i++)
	{
		f>>x>>c;
		if(c==0)
		{
			v[i]-=x;
			se-=x;
		}
		else
		{
			v[i]=x;
			se+=x;
		}
	}
	for(i=1; i<n; i++)
		v[i+n]=v[i];
	m=n+n-1;
	maxim=v[1];
	p=1;
	pm=1;
	l=1;
	lm=1;
	s=v[1];
	if(s<0)
		s=0;
	/*for(i=2; i<=m; i++)
	{
		if(s==0)
		{
			s=v[i];
			if(s>maxim)
			{
				maxim=s;
				l=1;
				p=i;
			}
		}
		else
		{
			s+=v[i];
			l++;
			if(s>maxim)
			{
				maxim=s;
				lm=l;
				pm=p;
			}
		}
		if(s<0)
		{
			l=1;
			s=0;
			p=i+1;
		}
	}*/
	for(i=2; i<=m; i++)
	{
		a[i]=max(v[i], a[i-1]+v[i]);
		if(a[i]>a[i-1])
			l++;
		if(a[i]>maxim)
		{
			maxim=a[i];
			lm=l;
			pm=p;
		}
		if(a[i]<0)
		{
			l=1;
			p=i+1;
		}
	}
	g<<maxim<<' '<<pm<<' '<<lm<<"\n";
	g.close();
	return 0;
}