Cod sursa(job #492469)

Utilizator vladcatrinaVlad Catrina vladcatrina Data 14 octombrie 2010 17:39:41
Problema Buline Scor 10
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.9 kb
#include <stdio.h>

#define MIN -10002
#define MAX 10002

FILE*f = fopen("buline.in","r");
FILE*g = fopen("buline.out","w");

int v[200001],i,j,n,x,st,sa,s,smax,smin,l1,l2,a,l,p1,p2,p;
char q;

int main() {
	
	smax=MIN;
	smin=MAX;
	fscanf(f,"%d",&n);
	for(i=1;i<=n;i++){
		fscanf(f,"%d %d",&x,&q);
		if(q)
			v[i]=x;
		else
			v[i]=-x;
		st+=v[i];
	}
	
	s=v[i];
	a=1;
	j=1;
	for(i=1;i<=n;i++){
		if(v[i]>v[i]+sa){
			a=i;
			s=v[i];
			j=1;
		} else {
			s=sa+v[i];
			j++;
		}
		if(s>smax){
			smax=s;
			l1=j;
			p1=a;
		}
	}
	
	s=v[i];
	a=1;
	j=1;
	for(i=1;i<=n;i++){
		if(v[i]<v[i]+sa){
			a=i;
			s=v[i];
			j=1;
		} else {
			s=sa+v[i];
			j++;
		}
		if(s<smin){
			smin=s;
			l2=j;
			p2=i+1;
		}
	}
	
	if(smax>(st-smin))
		s=smax, l=l1, p=p1;
	else
		s=st-smin, l=l2, p=p2;
	
	fprintf(g,"%d %d %d",s,p,l);
	
	fclose(f);
	fclose(g);
	return 0;
}