Cod sursa(job #425844)

Utilizator mihaipopa12Popa Mihai mihaipopa12 Data 26 martie 2010 10:39:21
Problema Buline Scor 80
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.98 kb
#include<stdio.h>
FILE*f=fopen("buline.in","r");
FILE*g=fopen("buline.out","w");
int v[200001],p,u,umin,umax,pmin,pmax,p2,u2,smin,smax,sant,sminant,a,b,i,nr,stotal,out,pout,lout,uout;
int main (){
	fscanf(f,"%d",&nr);
	for(i=1;i<=nr;i++){
		fscanf(f,"%d %d",&a,&b);
		if(b==0)
			v[i]=-a;
		else
			v[i]=a;
	}
	sant=-99999999;
	sminant=99999999;
	smax=-99999999;
	smin=99999999;
	for(i=1;i<=nr;i++){
		/*if(v[i]>v[i]+sant)
			sant=v[i],p=u=i;
		else
			sant=v[i]+sant,u++;
		if(sant>smax){
			smax=sant;
			pmax=p;
			umax=u;
		}
		*/
		
		if(v[i]<sminant+v[i])
			sminant=v[i],p2=u2=i;
		else
			sminant=v[i]+sminant,u2++;
		if(sminant<smin){
			smin=sminant;
			pmin=p2;
			umin=u2;
		}
		stotal+=v[i];
	}
	
	if(stotal-smin>smax){
		out=stotal-smin;
		pout=umin+1;
		uout=pmin;
		lout=nr-(umin+1)+pmin;
	}
	else{
		out=smax;
		pout=pmax;
		lout=umax-pmax;
	}
	
	
	fprintf(g,"%d %d %d",out,pout,lout);
	
	
	fclose(f);
	fclose(g);
	return 0;
}