Cod sursa(job #3270223)

Utilizator cosmin_mihaiDumitru Cosmin cosmin_mihai Data 22 ianuarie 2025 16:12:54
Problema Buline Scor 30
Compilator cpp-64 Status done
Runda Arhiva de probleme Marime 1.29 kb
//
// Created by Cosmin Dumitru on 22.01.2025.
//
#include <fstream>
#include <vector>
using namespace std;

ifstream cin("buline.in");
ofstream cout("buline.out");

int n,nr,semn,sum;
vector<int> v(1);

int main() {
    cin >> n;
    for (int i = 1; i <= n; ++i) {
        cin >> nr >> semn;
        if (!semn)
            nr *=-1;
        sum+=nr;
        v.push_back(nr);
    }
    int max_sum = v[1], csum = v[1],
         start[2] = {1,1}, end[] = {1,1}, temp_start = 1,
         min_sum = v[1];
    for (int i = 2; i <=n; ++i) {
        if (csum +v[i]>v[i]){
            csum+=v[i];
        }else{
            temp_start = i;
            csum = v[i];
        }
        if (csum > max_sum) {
            max_sum = csum;
            start[0] = temp_start;
            end[0] = i;
        }
    }
    csum = v[1];
    for (int i = 2; i <=n; ++i) {
        if(csum+v[i]<v[i]){
            csum+=v[i];
        }else{
            temp_start = i;
            csum = v[i];
        }
        if (csum<min_sum){
            min_sum = csum;
            start[1] = temp_start;
            end[1] = i;
        }
    }
    if (max_sum>sum-min_sum){
        cout << max_sum<<' ' << start[0] <<' ' << end[0]-start[0]+1;
    }else{
        cout << sum-min_sum<<' ' << end[1]+1 <<' ' <<n-start[1]+end[1]-1;
    }
    return 0;
}