Cod sursa(job #3165108)

Utilizator AlexSerban21Serban Alexandru AlexSerban21 Data 5 noiembrie 2023 14:19:53
Problema Buline Scor 100
Compilator cpp-64 Status done
Runda Arhiva de probleme Marime 1.34 kb
#include <fstream>
using namespace std;
ifstream fin ("buline.in");
ofstream fout ("buline.out");
int smax[200001],smin[200001],stmax[200001],stmin[200001];
int s,nr,ok,x,mins,maxs,n,i,lg,minst,mindr,maxst,maxdr;
int main ()
{
    fin>>n;
    smin[0]=2000000001;
    smax[0]=-2000000001;
    for (i=1; i<=n; i++)
    {
        fin>>x>>ok;
        if (ok==0)
            x=-x;
        s+=x;
        if (smax[i-1]+x<x)
        {
            smax[i]=x;
            stmax[i]=i;
        }
        else
        {
            smax[i]=smax[i-1]+x;
            stmax[i]=stmax[i-1];
        }
        if (smin[i-1]+x>x)
        {
            smin[i]=x;
            stmin[i]=i;
        }
        else
        {
            smin[i]=smin[i-1]+x;
            stmin[i]=stmin[i-1];
        }
    }
    for (i=1; i<=n; i++)
    {
        if (smax[i]>maxs)
        {
            maxs=smax[i];
            maxst=stmax[i];
            maxdr=i;
        }
        if (smin[i]<mins)
        {
            mins=smin[i];
            minst=stmin[i];
            mindr=i;
        }
    }
    if (maxs>s-mins||nr==n)
        fout<<maxs<<" "<<maxst<<" "<<maxdr-maxst+1;
    else
    {
        lg=mindr-minst+1;
        mindr++;
        if (mindr>n)
            mindr=1;
        fout<<s-mins<<" "<<mindr<<" "<<n-lg;
    }
    return 0;
}