Cod sursa(job #1255499)

Utilizator alexandra_udristoiuUdristoiu Alexandra Maria alexandra_udristoiu Data 4 noiembrie 2014 20:52:40
Problema Buline Scor 100
Compilator cpp Status done
Runda Arhiva de probleme Marime 1.26 kb
#include<fstream>
using namespace std;
int n, i, maxim, sum, minim, p, u, ii, s, p1, u1, P, U, x, y, d;
int v[200001];
ifstream fin("buline.in");
ofstream fout("buline.out");
int main(){
	fin>> n;
	for(i = 1; i <= n; i++){
		fin>> x >> y;
		if(y == 1){
			v[i] = x;
		}
		else{
			v[i] = -x;
		}
		s += v[i];
	}
	sum = v[1];
	maxim = v[1];
	p = 1;
	u = 1;
	ii = 1;
	for(i = 2; i <= n; i++){
		sum += v[i];
		if(sum < v[i]){
			sum = v[i];
			ii = i;
		}
		if(sum > maxim){
			maxim = sum;
			p = ii;
			u = i;
		}
	}
	sum = v[1];
	minim = v[1];
	p1 = 1;
	u1 = 1;
	for(i = 2; i <= n; i++){
		sum += v[i];
		if(v[i] < sum){
			ii = i;
			sum = v[i];
		}
		if(sum < minim){
			minim = sum;
			p1 = ii;
			u1 = i;
		}
	}
	s -= minim;
	P = u1 + 1;
	U = p1 - 1;
	d = U + n - P + 1;
	if(maxim > s){
		fout<< maxim <<" "<< p <<" "<< u - p + 1;
	}
	else{
		if(s > maxim){
			fout<< s <<" "<< P <<" "<< d;
		}
		else{
			if(p < P){
				fout<< maxim <<" "<< p <<" "<< u - p + 1;
			}
			else{
				if(P < p){
					fout<< s <<" "<< P <<" "<< d;
				}
				else{
					if(u - p + 1 < d){
						fout<< maxim <<" "<< p <<" "<< u - p + 1;
					}
					else{
						fout<< s <<" "<< P <<" "<< d;
					}
				}
			}
		}
	}
	return 0;
}