Cod sursa(job #802438)

Utilizator CS-meStanca Marian Ciprian CS-me Data 26 octombrie 2012 18:29:09
Problema Buline Scor 100
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.9 kb
#include<stdio.h>

FILE *fin=fopen("buline.in", "r");
FILE *fout=fopen("buline.out", "w");

int n,i,j,x,y,ss,si,s,smax,smin,nr,p,u,pmax,umax,pi,ui,umin,pmin ;
int v[200100];
 

int main () {
	
	fscanf(fin, "%d", &n);
	for (i=1;i<=n;i++){
		fscanf(fin, "%d%d", &x, &y);
		if( y==0 ){
			v[i]=-x;
		}
		if( y==1 ){
			v[i]=x;
		}
	}
	smin=999999999;
	smax=-999999999;
	
	for(i=1;i<=n;i++)
		ss=ss+v[i];
	s=v[1];
	si=v[1];
	p=u=1;
	pi=ui=1;
	for (i=2;i<=n;i++){
		if(v[i]>v[i]+s){
			s=v[i];
			p=u=i;
		}
		else {
			s=v[i]+s;
			++u;
		}
		if (s>smax){
			smax=s;
			pmax=p;
			umax=u;
		}
		if(v[i]<v[i]+si){
			si=v[i];
			pi=ui=i;
		}
		else{
			si=v[i]+si;
			++ui;
		}
		if (si<smin){
			smin=si;
			pmin=pi;
			umin=ui;
		}
	}
	if (smax>ss-smin){
		nr=smax;
		fprintf(fout,"%d %d %d", nr, pmax, umax-pmax+1);
	}
	else{
		nr=ss-smin;
		fprintf(fout, "%d %d %d", nr, umin+1, n-umin+pmin-1);
	}
	
	return 0;
}