Cod sursa(job #1846466)

Utilizator Andrei_Info1Ionescu Andrei Andrei_Info1 Data 12 ianuarie 2017 21:19:07
Problema Buline Scor 0
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.97 kb
#include <cstdio>

using namespace std;
int v[400000];
int main()
{
    freopen("buline.in","r",stdin);
    freopen("buline.out","w",stdout);

    int n,st,dr,smax,s,l,lmin,P,an;
    scanf("%d",&n);
    for(st=1 ; st<=n ; st++)
    {
        scanf("%d%d", &v[st], &an);
        if(an==0)
            v[st]=0-v[st];
        v[st+n]=v[st];
    }

    lmin=n+n+1;
    s=0,smax=v[1];
    for(st=dr=1 ; dr<=n+n ; dr++)
    {
        s+=v[dr];
        l=dr-st+1;
        if(s>smax && l<=n)
        {
            smax=s;
            lmin=l;
            P=st;
        }
        while(st<=dr && s>=smax)
        {
            l=dr-st+1;
            if(s>smax && l<=n)
            {
                smax=s;
                lmin=l;
                P=st;
                break;
            }
            if(l<lmin)
                lmin=l, P=st;
            s-=v[st];
            st++;
        }
    }

    printf("%d %d %d", smax, P, lmin);
    return 0;
}