Cod sursa(job #3166121)

Utilizator ShadowZoidPorojan Victor-Andrei ShadowZoid Data 7 noiembrie 2023 18:52:17
Problema Buline Scor 100
Compilator cpp-64 Status done
Runda Arhiva de probleme Marime 1.56 kb
#include <fstream>
#include <algorithm>
#include <cmath>
#include <cstring>
using namespace std;
ifstream cin("buline.in");
ofstream cout("buline.out");
int v[200005],i,l1,l2,i1,i2,n,x,y,l3,l4,i3,i4;
long long s1,s2,s3,s4,s5;
int main()
{
    cin>>n;
    for(i=1; i<=n; i++)
    {
        cin>>x>>y;
        if(y==0)
            v[i]=-x;
        else
            v[i]=x;
        s3+=v[i];
    }
    s1=s2=s5=s4=v[1];
    l1=l2=1;
    i1=i2=1;
    for(i=2; i<=n; i++)
    {
        if(s1+v[i]>v[i])
        {
            l1++;
            s1+=v[i];
        }
        else
        {
            s1=v[i];
            i1=i;
            l1=1;
        }
        if(s5==s1)
            if(i4==i1)
                if(l4>l1)
                {
                    s5=s1;
                    i4=i1;
                    l4=l1;
                }
        if(s5<s1)
        {
            s5=s1;
            i4=i1;
            l4=l1;
        }
        if(s2+v[i]<v[i])
        {
            l2++;
            s2+=v[i];
        }
        else
        {
            s2=v[i];
            i2=i;
            l2=1;
        }
        if(s2==s4)
            if(i3==i2)
                if(l3>l2)
                {
                    s4=s2;
                    i3=i2;
                    l3=l2;
                }
        if(s2<s4)
        {
            s4=s2;
            i3=i2;
            l3=l2;
        }
    }
    if(s3-s4>s5)
        cout<<s3-s4<<" "<<i3+l3<<" "<<n-l3;
    else
        cout<<s5<<" "<<i4<<" "<<l4;
    return 0;
}