Cod sursa(job #1412159)

Utilizator isav_costinVlad Costin Andrei isav_costin Data 1 aprilie 2015 10:00:01
Problema Buline Scor 0
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.74 kb
#include <cstdio>
int bul[400003];
int main()
{
    freopen( "buline.in", "r", stdin );
    freopen( "buline.out", "w", stdout );
    int n, i, cul, sc, st, smax, stm, drm, min;
    scanf( "%d", &n );
    min=2*n+1;
    for( i=1; i<=n; i++ )
    {
        scanf( "%d%d", &bul[i], &cul );
        if( cul==0 )
            bul[i]=0-bul[i];
        bul[n+i]=bul[i];
    }
    sc=smax=bul[1];
    st=stm=drm=1;
    for( i=2; i<=2*n-1; i++ )
    {
        if( sc+bul[i]>bul[i] )
            sc=sc+bul[i];
        else
            sc=bul[i], st=i;
        if( sc>smax && i-st+1<=n && (st-1)%n+1<=min )
            stm=st, drm=i, smax=sc, min=(st-1)%n+1;
    }
    printf( "%d %d %d", smax, (stm-1)%n+1, drm-stm+1 );
    return 0;
}