Cod sursa(job #2746833)

Utilizator As932Stanciu Andreea As932 Data 28 aprilie 2021 16:19:23
Problema Buline Scor 100
Compilator cpp-64 Status done
Runda Arhiva de probleme Marime 1.26 kb
#include <fstream>

using namespace std;

ifstream fin("buline.in");
ofstream fout("buline.out");

const int nmax = 2e5 + 5;

int n, v[nmax];
long long sum;

void read(){
    fin >> n;

    for(int i = 1; i <= n; i++){
        int nr, sg;

        fin >> nr >> sg;

        if(!sg)
            nr *= (-1);

        v[i] = nr;
        sum += v[i];
    }
}

void solve(){
    long long s1 = 0, smx = v[1];
    int f1 = 1, l1 = 1, r1 = 1;

    for(int i = 1; i <= n; i++){
        if(s1 + v[i] < v[i]){
            s1 = v[i];
            f1 = i;
        } else
            s1 += v[i];

        if(s1 > smx){
            smx = s1;
            l1 = f1;
            r1 = i;
        }
    }

    long long s2 = 0, smn = v[1];
    int f2 = 1, l2 = 1, r2 = 1;

    for(int i = 1; i <= n; i++){
        if(s2 + v[i] >= v[i]){
            s2 = v[i];
            f2 = i;
        } else
            s2 += v[i];

        if(s2 < smn){
            smn = s2;
            l2 = f2;
            r2 = i;
        }
    }

    if(sum - smn > smx)
        fout << sum- smn << " " << r2 + 1 << " " << n - (r2 - l2 + 1);
    else
        fout << smx << " " << l1 << " " << r1 - l1 + 1;
}

int main()
{
    read();
    solve();

    return 0;
}