Cod sursa(job #1492149)

Utilizator AlexandraaaaMereu Alexandra Alexandraaaa Data 27 septembrie 2015 08:28:34
Problema Buline Scor 100
Compilator cpp Status done
Runda Arhiva de probleme Marime 1 kb
#include <iostream>
#include <fstream>

using namespace std;

int main(){
	ifstream f("buline.in");
	ofstream g("buline.out");

	int n, s, i, l, smax, lmax, imax, x;
	int v[200005];

	f >> n;
	f >> v[1] >> x;
	if (x == 0)
		v[1] *= (-1);
	smax = s = v[1];
	l = i = imax = lmax = 1;

	for (int j = 2; j <= n; ++j){
		f >> v[j] >> x;
		if (x == 0)
			v[j] *= (-1);

		if (s < 0){
			s = v[j];
			i = j;
			l = 1;
		}
		else{
			s += v[j];
			l++;
		}

		if (s > smax){
			smax = s;
			imax = i;
			lmax = l;
		}
	}

	int smin, lmin, imin, st;
	smin = s = st = v[1];
	l = i = lmin = imin = 1;

	for (int j = 2; j <= n; ++j){
		st += v[j];

		if (s > 0){
			s = v[j];
			i = j;
			l = 1;
		}
		else{
			s += v[j];
			l++;
		}

		if (s < smin){
			smin = s;
			imin = i;
			lmin = l;
		}
	}

	if (smax>=st - smin)
		g << smax << " " << imax << " " << lmax;
	else
		g << st - smin << " " << imin + lmin << " " << n - lmin;

	f.close();
	g.close();

	return 0;
}