Cod sursa(job #775142)

Utilizator Mihai22eMihai Ionut Enache Mihai22e Data 7 august 2012 13:19:34
Problema Buline Scor 20
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.75 kb
#include<stdio.h>

using namespace std;

#define MAXN 200002
#define INFINITE 999999999

int v[ 2 * MAXN ], best[ 2 * MAXN ];
int n, i, maxs = -INFINITE, x, beg, length, t;

int main()
{
	FILE *f = fopen("buline.in", "r");
	
	fscanf(f, "%d", &n);
	for(i = 1; i <= n; ++i)
	{
		fscanf(f, "%d %d", &v[i], &x);
		if(!x)
			v[i] = -v[i];
		v[i + n] = v[i];
	}
	
	fclose(f);
	
	t = 2 * n, x = 1;
	for(i = 1; i <= t; ++i)
	{
		if(best[i-1] + v[i] > v[i] && i - x + 1 <= n)
			best[i] = best[i-1] + v[i];
		else
			best[i] = v[i], x = i;
		if(best[i] > maxs)
			maxs = best[i], beg = x, length = i - beg + 1;
	}
	
	FILE *g = fopen("buline.out", "w");
	
	fprintf(g, "%d %d %d\n", maxs, beg, length);

	fclose(g);
	
	return 0;
}