Cod sursa(job #2131122)

Utilizator mihaela.macarieMihaela Macarie mihaela.macarie Data 14 februarie 2018 13:06:53
Problema Buline Scor 100
Compilator cpp Status done
Runda Arhiva de probleme Marime 1.43 kb
#include <iostream>
#include <fstream>
#include <climits>

using namespace std;

int v[200000];

int main()
{
    int n,nr,sumaint=0,sumaoptima=INT_MIN,i,li,lf,a,b,pozint,sumin=INT_MIN,sumatotala=0,li1,lf1;
    ifstream in("buline.in");
    ofstream out("buline.out");
    in>>n;
    for(i=1;i<=n;i++)
    {
        in>>a>>b;
        if(b==0)
            v[i]=a*-1;
        else
            v[i]=a;
            sumatotala=sumatotala+v[i];
    }
    for(i=1;i<=n;i++)
    {
        if(sumaint<0)
            sumaint=v[i],pozint=i;
        else
            sumaint=sumaint+v[i];
        if(sumaint>sumaoptima)
            sumaoptima=sumaint,li=pozint,lf=i;
    }
    for(i=1;i<=n;i++)
    {
        v[i]=v[i]*-1;
    }
    sumaint=0;pozint=1;
    for(i=1;i<=n;i++)
    {
        if(sumaint<0)
        {
            sumaint=v[i];pozint=i;
        }
        else
        {
            sumaint=sumaint+v[i];
        }
        if(sumin<sumaint)
        {
            sumin=sumaint,li1=pozint,lf1=i;
        }
    }
    sumin=sumin*-1;
    sumatotala-=sumin;
    if(sumatotala>sumaoptima)
    {
        sumaoptima=sumatotala;
        li=lf1+1;
        lf=li1-1;
    }
    if(li<lf)
    {
        lf=lf-li+1;
    }
    else
    {
        lf=n-li+lf+1;
    }
    out<<sumaoptima<<" "<<li<<" "<<lf;
    /*for(i=1;i<=n;i++)
        out<<v[i]<<" ";*/
    in.close();
    out.close();
    return 0;
}