Cod sursa(job #1795449)

Utilizator AnduB08Boldisor Andu AnduB08 Data 2 noiembrie 2016 14:39:17
Problema Buline Scor 100
Compilator cpp Status done
Runda Arhiva de probleme Marime 1.19 kb
#include <fstream>
using namespace std;
ifstream f("buline.in");
ofstream g("buline.out");
bool a;
int n,i,v[200010],l,p,u,s[200010],t[200010],l1,lmax,pmax,u1;
long long Max,rez,ss,smax,Max1;
int main()
{
    f>>n;
    for(i=1;i<=n;++i)
    {
        f>>v[i]>>a;
        if(a==0)
            v[i]=-v[i];
    }
    for(i=1;i<=n;++i)
    {
        s[i]=s[i-1]+v[i];
        t[i]=max(t[i-1],s[i]);
    }
    for(i=1;i<=n;++i)
    {
        rez=t[i-1]+s[n]-s[i-1];
        if(Max<rez)
        {
            Max=rez;
            u=i;
        }
    }
    Max1=Max;
    u1=u;
    while(Max>0)
    {
        if(u>n)
            u=1;
        l++;
        Max-=v[u];
        u++;
    }
    l1=l;
    l=0;
    for(i=1;i<=n;++i)
    {
        if(ss+v[i]>=v[i])
        {
            l++;
            ss+=v[i];
        }
        else
        {
            p=i;
            l=1;
            ss=v[i];
        }
        if(smax<ss)
        {
            smax=ss;
            lmax=l;
            pmax=p;
        }
    }
    if(Max1>smax)
    {
        g<<Max1<<" "<<u1<<" "<<l1;
    }
    else
    {
        g<<smax<<" "<<pmax<<" "<<lmax;
    }
    return 0;
}