Cod sursa(job #59715)

Utilizator andrei.12Andrei Parvu andrei.12 Data 10 mai 2007 11:21:45
Problema Buline Scor 30
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.77 kb
#include<stdio.h>
#include<math.h>
int s, i, smax, lg, poz, lgf, pozf, n, nr, sol;
struct ches{
	int a, b;
};
ches v[400000];
int main()
{
	freopen("buline.in","r",stdin);
	freopen("buline.out","w",stdout);
	scanf("%d",&n);
	for (i=1;i<=n;i++)
		scanf("%d%d",&v[i].a,&v[i].b);
	for (i=n+1;i<2*n;i++){
		v[i].a=v[i-n].a;
		v[i].b=v[i-n].b;
	}
	nr=1;
	s=0;
	poz=1;
	lg=0;
	while (nr<2*n){
		if (lg<n){
			s+=pow(-1,v[nr].b-1)*v[nr].a;
			if (v[nr].b==0) sol=nr;
			lg++;
			if (s>smax){
				pozf=poz;
				lgf=lg;
				smax=s;
			}
			if (s<=0){
				s=0;
				lg=0;
				poz=nr+1;
			}
			nr++;
		}
		else {
			s=0;
			poz=sol+1;
			lg=0;
			nr=sol+1;
		}
	}
	printf("%d %d %d\n",smax,pozf,lgf);
	fclose(stdin);
	fclose(stdout);
	return 0;
}