Cod sursa(job #80735)

Utilizator maria_pparcalabescu maria daniela maria_p Data 29 august 2007 17:48:49
Problema Buline Scor 0
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.79 kb
#include<stdio.h>

long a[200000],i,smax,x,y,sc,poz,nr,n;
int main(){
	freopen("buline.in","r",stdin);
	freopen("buline.out","w",stdout);
	scanf("%ld",&n);
	nr=0;
	for(i=0;i<n;i++){
		scanf("%ld%ld",&x,&y);
		if(y==0)a[i]=-x;
		else a[i]=x;
		if(a[i]<0)nr++;
	}
	sc=0;smax=0;poz=0;x=0;y=0;
	for(i=0;i<n;i++){
		if(sc<0){
			sc=a[i];
			poz=i;
		}
		else sc+=a[i];
		if(sc>smax){
			smax=sc;
			x=poz;
			y=i;
		}
	}
	if(sc>=0 && x!=0)
		for(i=0;i<x && sc>=0;i++){
			sc+=a[i];
			if(sc>smax){
			smax=sc;
			x=poz;
			y=i;
			}
	}
	if(nr==n){
		smax=a[0];x=0;y=0;
		for(i=1;i<n;i++)
			if(a[i]>smax){
				smax=a[i];
				x=i;
				y=i;
			}
	}
	x++;y++;
	if(y<x)y=n-x+1+y;
	printf("%ld %ld %ld\n",smax,x,y);
	fclose(stdin);
	fclose(stdout);
	return 0;
}