Cod sursa(job #26120)

Utilizator Binary_FireFlorin Pg Binary_Fire Data 5 martie 2007 11:00:59
Problema Buline Scor 100
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.91 kb
#include <stdio.h>
#define fin  "buline.in"
#define fout "buline.out"
#define Nmax 200001

int N,s[Nmax],smax,pmax,lmax;

int main() {
int i,min,pmin;
int max,pmx,c;

	freopen(fin,"r",stdin); freopen(fout,"w",stdout);

	pmin=0; min=0;

	scanf("%i",&N);

	for (i=1;i<=N;++i) {
		scanf("%i%i",&s[i],&c);
		if (c==0) s[i]*=-1;
		s[i]+=s[i-1];
	}

	//for (i=1;i<=N;++i) fprintf(stderr,"%i ",s[i]);

	for (i=1;i<=N;++i) {

		if (s[i]-min>smax) {

			smax=s[i]-min;
			pmax=pmin+1;
			lmax=i-pmin;
		}

		if (s[i]<min) {
			min=s[i];
			pmin=i;
		}

	}

	max=0; pmx=0;
	for (i=1;i<=N;++i) {

		if (max+s[N]-s[i-1]>smax) {
			smax=max+s[N]-s[i-1];
			pmax=i;
			lmax=pmx+N-i+1;
		}
		else

		if (max+s[N]-s[i-1]==smax)
			lmax=pmx+N-i+1;

		if (s[i]>max) {
			max=s[i];
			pmx=i;
		}
	}

	printf("%i %i %i\n",smax,pmax,lmax);

	fclose(stdin); fclose(stdout);

	return 0;
}