Cod sursa(job #72474)

Utilizator M@2Te4iMatei Misarca M@2Te4i Data 13 iulie 2007 23:30:47
Problema Buline Scor 0
Compilator cpp Status done
Runda Arhiva de probleme Marime 1.14 kb
#include<stdio.h>
#define val 400003

long n,inc,lung;
long 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 long s=a[0];
	long w=0,q;
	max=-20000;
	for (long i=1; 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)
	       {
	       inc=q;
	       lung=i-w+1;
	       max=s;
	       }
	       else if (s==max && q>w)
		    {
		    inc=q;
		    lung=i-w+1;
//		    max=s;
		    }
		    else if (s==max && inc==q && lung>i-w+1)
			 {
//		      	 inc=w;
			 lung=i-w+1;
//			 max=s;
			 }


	}
}

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

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