Cod sursa(job #26158)

Utilizator pauldbPaul-Dan Baltescu pauldb Data 5 martie 2007 12:03:10
Problema Buline Scor 0
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.95 kb
#include <Stdio.h>

#define maxn 4000//10
#define maxv -10000

int n,s,p;
short a[maxn];
int sol,pos,l;

int main()
{
    freopen("buline.in","r",stdin);
    freopen("buline.out","w",stdout);
    
    scanf("%d ",&n);
    int i,semn;
    
    for (i=1;i<=n;i++)
    {
        scanf("%d %d ",&a[i],&semn);
        if (!semn) a[i]=-a[i];
    }
    
    for (i=1;i<=n;i++) a[n+i]=a[i];    
    n=n*2;
	s=maxv;
        
    for (i=1;i<=n;i++)
    {
		if (s<0)
        {
            s=0;
            p=i;
        }
        
        s+=a[i];
        
        if (i-p==n/2)
        {
			 s-=a[p];
			 p++;
			 while ((a[p]<0) && (p<=i))
             {
                   s-=a[p];
                   p++;
             }
        }
        
        if ((s>sol) && (p<=n/2))
        {
             sol=s;
             pos=p;
             l=i-pos+1;
        }
    }
    
    printf("%d %d %d\n",sol,pos,l);
    
    return 0;
}