Cod sursa(job #303263)

Utilizator pedobearBacauanu Vlad pedobear Data 9 aprilie 2009 18:09:40
Problema Buline Scor 0
Compilator cpp Status done
Runda Arhiva de probleme Marime 1.17 kb
#include <stdio.h>

int i,n,smax=-30000,s,lung,lungmax,poz=1,imax;
int v[400200];

int main ()
{
    freopen ("buline.in","r",stdin);
    freopen ("buline.out","w",stdout);
    
    scanf ("%d",&n);
    for (i=1;i<=n;i++){
        int nr,cul;
        scanf ("%d %d",&nr,&cul);
        if (cul==0) v[i]=-nr;
        else v[i]=nr;
        v[n+i]=v[i];
        }
    
    for (i=1;i<=2*n;i++) printf ("%d ",v[i]);
    
    for (i=1;i<=2*n;i++){
        s=s+v[i];
        lung++;
        if (s>smax){
                    smax=s;
                    lungmax=lung;
                    imax=poz;
                    }
        if (s==smax){
                     if (poz==imax && lungmax>lung)lungmax=lung;
                     if (poz<imax){
                                   imax=poz;
                                   lungmax=lung;
                                   }
                     }           
        if (s<0) {
                  s=lung=0;
                  poz=i+1;
                  }
        if (lung==n) break;
        }
        
    if (imax>n) imax-=n;
        
    printf ("\n%d %d %d",smax,imax,lungmax);
                  
    return 0;
}