Cod sursa(job #3283944)

Utilizator _andr31Rusanescu Andrei-Marian _andr31 Data 10 martie 2025 18:44:24
Problema Buline Scor 100
Compilator cpp-64 Status done
Runda Arhiva de probleme Marime 1.24 kb
#include <bits/stdc++.h>
using namespace std;

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

int n, semn, v[200010], sum_max = INT_MIN, sum_min = INT_MAX, sum_total;
int st_min = 1, dr_min = 1, st_max = 1, dr_max = 1;

int main(void) {
    fin >> n;
    for (int i = 0; i < n; ++i) {
        fin >> v[i] >> semn;
        if (!semn)
            v[i] *= -1;

        sum_total += v[i];
    }
    int sum = v[0], idx = 1;
    for (int i = 1; i < n; ++i) {
        if (sum + v[i] >= v[i])
            sum += v[i];
        else {
            sum = v[i];
            idx = i;
        }

        if (sum > sum_max) {
            sum_max = sum;
            st_max = idx + 1;
            dr_max = i + 1;
        }
    }

    sum = v[0];
    idx = 1;
    for (int i = 1; i < n; ++i) {
        if (sum + v[i] <= v[i])
            sum += v[i];
        else {
            sum = v[i];
            idx = i;
        }

        if (sum < sum_min) {
            sum_min = sum;
            st_min = idx + 1;
            dr_min = i + 1;
        }
    }

    if (sum_max > sum_total - sum_min)
        fout << sum_max << " " << st_max << " " << dr_max - st_max + 1;
    else
        fout << sum_total - sum_min << " " << dr_min + 1 << " " << n + st_min - dr_min - 1;

    return 0;
}