Cod sursa(job #492284)

Utilizator cnt_tstcont teste cnt_tst Data 14 octombrie 2010 07:44:44
Problema Buline Scor 30
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.92 kb
#include<stdio.h>
FILE*f=fopen("buline.in", "r");
FILE *g=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(f, "%d", &n);
	for (i=1;i<=n;i++){
		fscanf (f, "%d%d", &x, &y);
		if (y==0){
			v[i]=-x;
		}
		if(y==1){
			v[i]=x;
		}
	}
	smin=200100;
	smax=-200100;
	for(i=1;i<=n;i++)
		ss=ss+v[i];
	s=v[1];
	si=v[1];
	p=u=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]+s;
			++ui;
		}
		if (si<smin)
			smin=si, pmin=pi, umin=ui;
	}
	if (smax>ss-smin){
		nr=smax;
		fprintf(g, "%d %d %d", nr, pmax, umax-pmax+1);
	}
	else{
		nr=ss-smin;
		fprintf(g, "%d %d %d", nr, umin+1, n-umin+pmin-1);
		
	}
	
	
	
	fclose(f);
	fclose(g);
	return 0;
}