Cod sursa(job #3167300)

Utilizator Manolea_Teodor_StefanManolea Teodor Stefan Manolea_Teodor_Stefan Data 10 noiembrie 2023 16:15:19
Problema Buline Scor 0
Compilator cpp-64 Status done
Runda Arhiva de probleme Marime 1.5 kb
#include <bits/stdc++.h>

using namespace std;
ifstream fin("buline.in");
ofstream fout("buline.out");
/*
struct buline
{
    int value;
    friend istream& operator>>(istream& os, buline &var)
    {
        short type;
        os>>var.value>>type;
        if(!type)
            var.value *= -1;
        return os;
    }
};*/
struct answer
{
    int value;
    short start;
    short length;
    friend ostream& operator<<(ostream& os, answer &ans)
    {
        os<<ans.value<<' '<<ans.start<<' '<<ans.length;
    }
} ans;
int n;
vector<short> v;
short x;
int leftie;
int i;
int mem;

int a,b;
int main()
{
    fin>>n;
    //buline aux;
    fin>>a>>b;
    if(!b)
        a*=-1;
    ans = {a, 1, 1};
    v.push_back(a);

    for( i = 2; i <= n; i++)
    {
        fin>>a>>b;
        if(!b)
            a*=-1;
        x = a;
        if(v.back() + x > x)
            v.push_back(v.back() + x);
        else
            leftie=i,v.push_back(x);
        if(v.back() > ans.value)
            ans = {v.back(), leftie, i - leftie + 1};
    }
    /*
    if(ans.length < n)
    {
        mem = v.back() + v[0];
        if(ans.value < mem)
            ans.value = mem, ans.length = ans.length + 1;
        for( i = 1; i < leftie - 1; i++)
        {
            if(mem + v[i] > v[i])
                mem += v[i];
            if(ans.value < mem)
                ans.value = mem, ans.length = ans.length + i + 1;
        }
    }
    */
    fout<<ans;
    return 0;
}