Cod sursa(job #254268)

Utilizator DraStiKDragos Oprica DraStiK Data 7 februarie 2009 09:28:20
Problema Buline Scor 0
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.81 kb
#include <stdio.h>
#define DIM 4005
int a[DIM/2],s[DIM],best[DIM];
int n,min,max,mini,maxi;
void read ()
{
    int i,nr;
	scanf ("%d",&n);
	for (i=1; i<=n; ++i)
	{
	   scanf ("%d%d",&a[i],&nr);
	   if (!nr)
	       a[i]*=-1;
	   s[i]=s[i-1]+a[i];
    }
	for (i=n+1; i<=2*n; ++i)
	   s[i]=s[i-1]+a[i-n];
}
void solve ()
{
    int i;
    mini=maxi=1;
    min=s[1];
    max=-DIM;
	for (i=2; i<=n+mini+1; ++i)
    {
        best[i]=s[i]-min;
        if (min>s[i])
        {
            min=s[i];
            mini=i;
        }
        if (max<best[i]) 
        {
            max=best[i];
            maxi=i;
        }
    }
}
int main ()
{
	freopen ("buline.in","r",stdin);
	freopen ("buline.out","w",stdout);
	read ();
	solve ();
	printf ("%d %d %d\n",max,mini+1,maxi-mini);
	return 0;
}