Cod sursa(job #2133009)

Utilizator bodea.georgianaBodea Georgiana bodea.georgiana Data 16 februarie 2018 13:58:13
Problema Buline Scor 100
Compilator cpp Status done
Runda Arhiva de probleme Marime 1.32 kb
#include <stdio.h>

using namespace std;
FILE *f,*g;

int v[500004];
int main()
{
    int n,i,nr,xx,li1=1,lf1=1,so1=-999999999,si1=0,lg1=0,tot=0,poz,li2=1,lf2=1,so2=999999999,si2=0,lg2=0,lg;
    f=fopen("buline.in","r");
    g=fopen("buline.out","w");
    fscanf(f,"%d",&n);
    for(i=1;i<=n;i++)
    {
        fscanf(f,"%d %d",&v[i],&xx);
        if(xx==0)
            v[i]=v[i]*(-1);
        v[n+i]=v[i];
        tot+=v[i];
    }
    poz=1;
    for(i=1;i<=2*n;i++)
    {
        if(si1<0)
        {
            if(i>n)
                break;
            si1=v[i],poz=i;
        }
        else
            si1+=v[i];
        if(si1>so1&&i-li1+1<=n)
        {
            so1=si1;
            li1=poz;
            lf1=i;
        }
    }
    lg1=lf1-li1+1;
    poz=1;

    for(i=1;i<=2*n;i++)
    {
        if(si2>0)
        {
            if(i>n)
                break;
            si2=v[i],poz=i;
        }
        else
            si2+=v[i];
        if(si2<so2&&i-li2+1<=n)
        {
            so2=si2;
            li2=poz;
            lf2=i;
        }
    }
    lg2=lf2-li2+1;
    lg=n-lg2;
    if(tot-so2>so1&&lg!=0)
    {
        so1=tot-so2;
        li1=lf2+1;
        lg1=lg;
    }
    fprintf(g,"%d %d %d",so1,li1,lg1);

    fclose(f);
    fclose(g);
    return 0;
}