Cod sursa(job #751645)

Utilizator SteveStefan Eniceicu Steve Data 26 mai 2012 15:35:28
Problema Buline Scor 20
Compilator cpp Status done
Runda Arhiva de probleme Marime 1.09 kb
#include <fstream>

using namespace std;

int N;
int v[200010];
int deque;
int mare = -2000000000, pozmare, lgmare;

void Citire ()
{
	int x;
	ifstream fin ("buline.in");
	fin >> N;
	for (int i = 0; i < N; i++)
	{
		fin >> v[i] >> x;
		if (x == 0) v[i] *= -1;
		if (v[i] > mare)
		{
			mare = v[i];
			pozmare = i;
			lgmare = 1;
		}
	}
	fin.close ();
}

void Business ()
{
	int i, poz, lg;
	for (i = 0; i < N; i++)
	{
		if (v[i] > 0) break;
	}
	poz = i;
	lg = 0;
	for (; i < N; i++)
	{
		deque += v[i];
		lg++;
		if (deque < 0)
		{
			deque = 0;
			poz = i + 1;
			lg = 0;
		}
		else
		{
			if (deque > mare)
			{
				mare = deque;
				pozmare = poz;
				lgmare = lg;
			}
		}
	}
	for (i = 0; i < poz; i++)
	{
		deque += v[i];
		lg++;
		if (deque < 0) break;
		if (deque > mare)
		{
			mare = deque;
			pozmare = poz;
			lgmare = lg;
		}
	}
}

void Scriere ()
{
	ofstream fout ("buline.out");
	fout << mare << " " << pozmare + 1 << " " << lgmare;
	fout.close ();
}

int main ()
{
	Citire ();
	Business ();
	Scriere ();
	return 0;
}