Cod sursa(job #2132517)

Utilizator stefantagaTaga Stefan stefantaga Data 15 februarie 2018 20:17:13
Problema Buline Scor 80
Compilator cpp Status done
Runda Arhiva de probleme Marime 1.29 kb
#include <fstream>
#include <climits>
using namespace std;
ifstream f("buline.in");
ofstream g("buline.out");
int x,an,n,mini=0,maxim=INT_MIN,i,start,idx,sf,sum,r,k,tt,ok1,suma,ss,s,maxim1=INT_MIN,start1,sf1,lung;
int v[400001];
int main()
{
    f>>n;
    for (i=1;i<=n;i++)
    {
        f>>x>>an;
        if (an==0)
        {
            v[i]=-x;
        }
        else
        {
          v[i]=x;
        }
        suma+=v[i];
    }
    for (i=1;i<=n;i++)
    {
        s+=v[i];
        if (s-mini>maxim)
        {
            maxim=s;
            start=idx+1;
            sf=i;
        }
        if (mini>s)
        {
            idx=i;
            mini=s;
        }
    }
    for (i=1;i<=n;i++)
    {
        v[i]*=-1;
    }
    mini=0;
    for (i=1;i<=n;i++)
    {
        ss+=v[i];
        if (ss-mini>maxim1)
        {
            maxim1=ss-mini;
            start1=idx+1;
            sf1=i;
        }
        if (mini>ss)
        {
            idx=i;
            mini=ss;
        }
    }
    ///maxim1*=(-1);
    suma+=maxim1;
    if (maxim<suma)
    {
        maxim=suma;
        start=sf1+1;
        sf=start1-1;
    }
    lung=sf-start+1;
    if (lung<=0)
    {
        lung+=n;
    }
    g<<maxim<<" "<<start<<" "<<lung;
    return 0;
}