Cod sursa(job #3292819)

Utilizator Matei_AndronacheMatei Andronache Matei_Andronache Data 9 aprilie 2025 14:00:25
Problema Buline Scor 30
Compilator cpp-64 Status done
Runda Arhiva de probleme Marime 1.34 kb
#include <fstream>

using namespace std;
ifstream cin ("buline.in");
ofstream cout ("buline.out");
int v[400001];
int main()
{
    int n;
    cin>>n;
    int sum=0;
    bool ok;
    for (int i=1;i<=n;i++)
    {
        cin>>v[i]>>ok;
        if (ok==0)
            v[i]=v[i]*(-1);
        sum+=v[i];
        //v[i+n]=v[i];
    }
    int s1=v[1],i1=1,j1=1,max1=v[1],maxi=1,maxj=1;
    for (int i=2;i<=n;i++)
    {
        //s=max(s+v[i],v[i]);
        s1+=v[i];
        j1=i;
        if (s1<v[i])
        {
            s1=v[i];
            i1=i;
            j1=i;
        }
        if (s1>max1)
        {
            max1=s1;
            maxi=i1;
            maxj=j1;
        }
    }
    //cout<<max1<<" "<<maxi<<" "<<maxj<<endl;
    int s2=v[1],i2=1,j2=1,min1,mini=1,minj=1;
    for (int i=2;i<=n;i++)
    {
        //s=min(s+v[i],v[i]);
        s2+=v[i];
        i2=i;
        if (s2>v[i])
        {
            s2=v[i];
            i2=i;
            j2=i;
        }
        if (s2<min1)
        {
            min1=s2;
            mini=i2;
            minj=j2;
        }
    }
    //cout<<min1<<" "<<mini<<" "<<minj;
    if (max1>sum-min1)
    {
        cout<<max1<<" "<<maxi<<" "<<maxj-maxi+1;
    }
    else
    {
        cout<<sum-min1<<" "<<mini+1<<" "<<n-(minj-mini+1);
    }
    return 0;
}