Cod sursa(job #2075344)

Utilizator IVVladIon Vlad Vasile IVVlad Data 25 noiembrie 2017 12:55:22
Problema Buline Scor 80
Compilator cpp Status done
Runda Arhiva de probleme Marime 1.12 kb
#include <fstream>
using namespace std;
ifstream f("buline.in");
ofstream g("buline.out");
long long n,s[200010],v[200010],smax=-2000000,ismin,ismax,t[200010],j[200010],da=0;
int main()
{
    bool x;
    f>>n;
    s[0]=0;
    t[0]=0;
    for(int i=1; i<=n; i++)
    {
        f>>v[i];
        f>>x;
        if(x==0) v[i]=-v[i];
        s[i]=s[i-1]+v[i];
        if(t[i-1]<s[i])
        {
            t[i]=s[i];
            j[i]=i;
        }
        else
        {
            t[i]=t[i-1];
            j[i]=j[i-1];
        }
    }
    for(int i=1; i<=n+1; i++)
    {
        if(smax<=t[i-1]+s[n]-s[i-1])
        {
            if(da==0)
            {
                ismax=n+j[i-1]-i+1;
                da=1;
            }
            smax=t[i-1]+s[n]-s[i-1];
            if(ismin<i)
            {
                ismin=i;
                ismax=n+j[i-1]-i+1;
            }
            if(ismin==i)
                if(ismax>n+j[i-1]-i+1) ismax=n+j[i-1]-i+1;
        }
    }
    if(ismin==n+1)
    {
        ismin=1;
        ismax=n;
    }
    g<<smax<<" "<<ismin<<" "<<ismax;
    return 0;
}