Cod sursa(job #2123269)

Utilizator NurofenMarc Roberto Nurofen Data 5 februarie 2018 23:55:40
Problema Buline Scor 30
Compilator cpp Status done
Runda Arhiva de probleme Marime 1.23 kb
#include <stdio.h>
#include <climits>

using namespace std;
FILE *f,*g;

int v[400004];
int main()
{
    int n,x,i;
    f=fopen("buline.in","r");
    g=fopen("buline.out","w");
    fscanf(f,"%d",&n);
    int j;
    for(j=1;j<=n;j++)
    {
        fscanf(f,"%d %d",&v[j],&x);
        if(x==0)
            v[j]=v[j]*(-1);
    }
    int so=INT_MIN,si=0,li=1,pi=1,pf;
    for(i=1;i<=n;i++)
    {
        if(si<0)
        {
            si=v[i],li=i;

        }
        else
            si+=v[i];
        if(si>so)
        {
            so=si;
            pi=li;
            pf=i;
        }

    }
    int so1=INT_MIN,si1=0,li1=1,pi1=1,pf1=1,ssm=0,lg;
    for(i=1;i<=n;i++)
    {
            ssm+=v[i];
        v[i]*=(-1);
        if(si1<0)
        {
            si1=v[i],li1=i;
        }
        else
            si1+=v[i];
        if(si1>so1)
        {
            so1=si1;
            pi1=li1;
            pf1=i;
        }

    }
    if(ssm-so1*(-1)>so)
    {
        so=ssm-so1*(-1);
        pi=pi1+1;
        pf=pf1-1;
    }
    if(pi>pf)
    {
       lg=n-pi+pf+1;
    }
    else
        lg=pf-pi+1;
    fprintf(g,"%d %d %d",so,pi,lg);
    fclose(f);
    fclose(g);
    return 0;
}