Cod sursa(job #2392043)

Utilizator georgipGeorgiana Petricele georgip Data 29 martie 2019 16:45:37
Problema Buline Scor 80
Compilator cpp-64 Status done
Runda Arhiva de probleme Marime 1.38 kb
#include <fstream>
#include <climits>

using namespace std;
ifstream fin ("buline.in");
ofstream fout ("buline.out");

int v[200004];
int main()
{
    int i,j,x,spar=0,smax=INT_MIN,pozpar=1,li,lf1,a,sum=0,lg,n,z=0,smin=INT_MIN,sumf,li1=1,lg1=1,lf;
    fin>>n;
    for(i=1;i<=n;i++)
        {
            fin>>x>>a;
            if(a==0)
                v[++z]=-x;
            else
                if(a==1)
                v[++z]=x;
        }
    for(i=1;i<=n;i++)
        sum+=v[i];
    for(i=1;i<=n;i++)
    {
        if(spar<0)
           {
                spar=v[i];
                pozpar=i;
           }
        else
                spar+=v[i];
        if(spar>smax)
        {
            smax=spar;
            li1=pozpar;
            lf1=i;
        }
    }
    lg1=lf1-li1;
    for(i=1;i<=z;i++)
    {
        v[i]=-v[i];
    }
    spar=0;
    pozpar=1;
    for(i=1;i<=z;i++)
    {
         if(spar<0)
           {
                spar=v[i];
                pozpar=i;
           }
        else
                spar+=v[i];
        if(spar>smin)
        {
            smin=spar;
            li=pozpar;
            lf=i;
        }
    }
    lg=lf-li+1;
    sumf=max(smax,sum+smin);
    if(sumf==smax)
        fout<<sumf<<" "<<li1<<" "<<lg1;
    else
        if(sumf==sum+smin)
        fout<<sumf<<" "<<lf+1<<" "<<n-lg;
    return 0;
}