Cod sursa(job #1461851)

Utilizator TudoseSanzianaTudose Sanziana TudoseSanziana Data 16 iulie 2015 15:44:20
Problema Buline Scor 100
Compilator cpp Status done
Runda Arhiva de probleme Marime 1.11 kb
#include <cstdio>
using namespace std;
int x[200005];
int main() {
    freopen("buline.in","r",stdin);
    freopen("buline.out","w",stdout);
    int i,n,a,b,stot=0,smax,sc,ic,sfm,im,smin,imin,sfmin,icmin,sc2,smax2;
    scanf("%d\n",&n);
    for(i=1; i<=n; i++)
    {
        scanf("%d%d\n",&a,&b);
        if(b==1) x[i]=a;
        else x[i]=-a;
        stot+=x[i];
    }
    sc=sc2=smin=smax=x[1];
    ic=icmin=imin=sfmin=im=sfm=1;
    for(i=2; i<=n; i++)
     {
        if(sc+x[i]<x[i])
        {
            sc=x[i];
            ic=i;
        }

    else
            sc+=x[i];
        if(sc>smax)
        {
            smax=sc;
            im=ic;
            sfm=i;
        }


            if(sc2+x[i]>x[i])
        {
            sc2=x[i];
            icmin=i;
        }

    else
            sc2+=x[i];
        if(sc2<smin)
        {
            smin=sc2;
            imin=icmin;
            sfmin=i;
        }
    }
    smax2=stot-smin;
if(smax>smax2)
    printf("%d %d %d\n",smax,im,sfm-im+1);
else
    printf("%d %d %d\n",smax2,(sfmin+1)%n,n-(sfmin-imin+1));
    return 0;
}