Cod sursa(job #492582)

Utilizator vladcatrinaVlad Catrina vladcatrina Data 15 octombrie 2010 07:52:44
Problema Buline Scor 100
Compilator cpp Status done
Runda Arhiva de probleme Marime 1.36 kb
#include <stdio.h>

#define MIN -99999999
#define MAX 99999999

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,S,P,L;
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=-1000000;
	a=1; //a = poz de inceput
	j=1; 
	for(i=1;i<=n;i++){
		if(v[i]>v[i]+s){
			a=i;
			s=v[i];
			j=1;
		} else {
			s=s+v[i];
			j++;
		}
		if(s>smax){
			smax=s;
			l1=j;
			p1=a;
		} else if (s == smax) {
			if (l1<j)
				l1 = j;
		}
	}
	S = smax; P = p1; L = l1;

	s=1000000;
	a=1; //a = poz de inceput
	j=1; 
	for(i=1;i<=n;i++){
		if(v[i]<v[i]+s){
			a=i;
			s=v[i];
			j=1;
		} else {
			s=s+v[i];
			j++;
		}
		if(s<smax){
			smax=s;
			l1=j;
			p1=a;
		}
	}

	if (S>st-smax) {
		fprintf(g,"%d %d %d",S,P,L);
	} else {
		fprintf(g,"%d %d %d",st-smax,p1+l1,n-l1);
	}
	
/*	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;
	
	/*	
	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;
		}
	}
*/

}