Cod sursa(job #490423)

Utilizator AndreiRSStatescu Andrei Rares AndreiRS Data 6 octombrie 2010 15:51:38
Problema Buline Scor 20
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.66 kb
#include <stdio.h>
#define DIM 200001

FILE *fi = fopen ("buline.in", "r");
FILE *fo = fopen ("buline.out", "w");

int N, A[200001], T;
int S, P, L;
int SM, SP, SL;

int main () {
	fscanf (fi, "%d%d%d", &N, &A[1], &T);
	if (T == 0) A[1] = -A[1];
	SM = S = A[1]; 
	
	for (int i=2; i<=N; ++i) {
		fscanf (fi, "%d%d", &A[i], &T);
		if (T == 0) A[i] = -A[i];
		
		if (S < 0)
			S = A[i], P = i, L = 1;
		else
			S += A[i], ++L;
		
		if (S > SM) 
			SM = S, SP = P, SL = L;
	}
	
	for (int i=1; i<P; ++i) {
		if (S < 0)
			break;
		else
			S += A[i], ++L;
		
		if (S > SM)
			SM = S, SP = P, SL = L;
	}
	
	fprintf (fo, "%d %d %d", SM, SP, SL);
}