Cod sursa(job #24931)

Utilizator grecoTiberiu-Lucian Florea greco Data 4 martie 2007 00:29:56
Problema Buline Scor 10
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.64 kb
using namespace std;

#include <cstdio>
#include <cstring>

#define MAX_N 200010
#define INFTY 0x3f3f3f3f

#define FIN "buline.in"
#define FOUT "buline.out"

int N, S, P, L;
int v[MAX_N<<1];

int main()
{
	int i, l, r, t, jeg;
	freopen(FIN, "r", stdin);
	freopen(FOUT, "w", stdout);

	scanf("%d", &N);
	for (i = 0; i < N; ++i) {
		scanf("%d %d", v+i, &jeg);
		v[i] *= (jeg ? +1 : -1);
	}
	memcpy(v+N, v, N*sizeof(int));

	S = -INFTY, P = L = INFTY;

	for (t = v[ l = r = 2*N-1 ]; l >= 0; t += v[--l]) {
		for (; l < r && ((r-l == N) || v[r] < 0); t -= v[r--]);
		if (t >= S)
			S = t, P = l+1, L = r-l+1;
	}
	printf("%d %d %d\n", S, P, L);
	return 0;
}