Cod sursa(job #35580)

Utilizator andrei.12Andrei Parvu andrei.12 Data 22 martie 2007 10:52:25
Problema Buline Scor 0
Compilator cpp Status done
Runda Arhiva de probleme Marime 1.15 kb
using namespace std;
#include<stdio.h>
#include<math.h>
int main(){
	FILE*f=fopen("buline.in","r");
	FILE*g=fopen("buline.out","w");
	long nr, v[2][20000], ga, n, sm, t, lg, poz, pz[20000], lung[20000], i, sume[20000], m;
	fscanf(f,"%ld",&nr);
	for (i=0;i<nr;i++)
		fscanf(f,"%ld%ld",&v[0][i],&v[1][i]);
	ga=1;
	n=0;
	sm=0;
	t=0;
	while (ga==0||n<nr){
		if (ga==1){
			sm=0;
			poz=n%nr+1;
			lg=1;
			sm=sm+pow(-1,v[1][n%nr]+1)*v[0][n%nr];
			if (sm<0) ga=1;
			else 
				if (lg>nr) ga=1;
				else{
					sume[t]=sm;
					pz[t]=poz;
					lung[t]=lg;
					t++;
					ga=0;
				}
			n++;
			
		}
		else {
			lg++;
			sm=sm+pow(-1,v[1][n%nr]+1)*v[0][n%nr];
			if (sm<0) ga=1;
			else 
				if (lg>nr) ga=1;
				else{
					sume[t]=sm;
					pz[t]=poz;
					lung[t]=lg;
					t++;
				}
			n++;
		}
	}
	m=sume[0];
	poz=0;
	for (i=1;i<t;i++)
		if (sume[i]>m) { m=sume[i]; poz=i;}
	if (m==0) {
		m=v[0][0];
		poz=0;
		for (i=1;i<nr;i++)
			if (v[0][i]<m){ m=v[0][i]; poz=i;}
		fprintf(g,"%ld %ld ",-m,poz);
		fprintf(g,"1\n");
	}
	else
	fprintf(g,"%ld %ld %ld\n",m, pz[poz], lung[poz]);
	fclose(f);
	fclose(g);
	return 0;
}