Cod sursa(job #72500)

Utilizator M@2Te4iMatei Misarca M@2Te4i Data 14 iulie 2007 00:13:57
Problema Buline Scor 20
Compilator cpp Status done
Runda Arhiva de probleme Marime 1.23 kb
#include<stdio.h>
#include<stdlib.h>
#define val 400003

long n,inc,lung;
long max;
long a[val];

void citire()
{
	freopen("buline.in","r",stdin);
	scanf("%ld", &n);
	int w;
	for (long i=0; i<n; i++)
	{
		scanf("%ld%d", &a[i], &w);
		if (w==0)
			a[i]*=-1;
		a[i+n]=a[i];
	}
	fclose(stdin);
}

void prelucrare()
{
	long s=a[0],e;
	long w=0,q;
	max=-20000;
	inc=0;
	lung=1;
	for (long i=1; i<n; i++)//i<2*n-1; i++)
	    {
	    if (a[i]>=s+a[i])
	       {
			s=a[i];
			w=i;
			}
			else s+=a[i];
/*	    if (i-w+1>n)
	       {
	       s-=a[w];
	       ++w;
	       }*/
		q=w+1;
/*		if (q>n)
			q-=n;*/
	    if (s>max && i-w+1<=n)
	       {
	       inc=q;
	       lung=i-w+1;
	       max=s;
	       }
	       else if (s==max && q<inc && i-w+1<=n)
		    {
		    inc=q;
		    lung=i-w+1;
//		    max=s;
		    }
		    else if (s==max && inc==q && lung>i-w+1 && i-w+1<=n)
			 {
//		      	 inc=w;
			 lung=i-w+1;
//			 max=s;
			 }
	}
}

void printare()
{
	freopen("buline.out","w",stdout);
/*	++inc;
	if (inc>n)
       {
       inc-=n;       
       }*/
	printf("%ld %ld %ld",max,inc,lung);
	fclose(stdout);
}

int main()
{
	citire();
	prelucrare();
	printare();
	return 0;
}