Cod sursa(job #2133005)

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

using namespace std;
FILE *f,*g;

int v[500004];
int main()
{
    int n,i,nr,xx,li=1,lf=1,so=999999999,si=0,lg=0,tot=0,poz=1,neg=0;
    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),neg++;
        v[n+i]=v[i];
        tot+=v[i];
    }
    if(neg<n)
    {
        for(i=1;i<=2*n;i++)
        {
            if(si>0)
            {
                if(i>n)
                    break;
                si=v[i];
                poz=i;
            }
            else
                si+=v[i];
            if(si<so&&i-li+1<=n)
            {
                so=si;
                li=poz;
                lf=i;
            }
        }
        so=tot-so;
        lg=lf-li+1;
        lg=n-lg;
        li=lf+1;
        fprintf(g,"%d %d %d",so,li,lg);
    }
    else
    {
        so=-999999999;
        for(i=1;i<=2*n;i++)
        {
            if(si<0)
            {
                if(i>n)
                    break;
                si=v[i];
                poz=i;
            }
            else
                si+=v[i];
            if(si>so&&i-li+1<=n)
            {
                so=si;
                li=poz;
                lf=i;
            }
        }
        lg=lf-li+1;
        fprintf(g,"%d %d %d",so,li,lf);
    }

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