Cod sursa(job #3238047)

Utilizator winemomComan Erin winemom Data 16 iulie 2024 09:13:37
Problema Buline Scor 100
Compilator cpp-64 Status done
Runda Arhiva de probleme Marime 1.27 kb
#include <bits/stdc++.h>
using namespace std;
ifstream f("buline.in");
ofstream g("buline.out");


int n, x, curent_max, curent_min, smax, smin;
int l_max, l_min, r_max, r_min, L_max, L_min, R_max, R_min;
bool culoare;

int prelucrare()
{
    if(culoare)
        return x;
    else
        return -x;
}

long long total;
int main()
{
    f >> n >> x >> culoare;
    x = prelucrare();
    total = x;
    curent_max = curent_min = smax = smin = x;
    l_min = r_min = l_min = l_max = L_min = L_max = R_min = R_max = 1;
    for(int i=2; i<=n; i++)
    {
        f >> x>> culoare;
        x = prelucrare();
        if(curent_max + x > x)
            curent_max += x, r_max++;
        else
            curent_max = x, l_max = r_max = i;

        if(curent_min + x < x)
            curent_min += x, r_min++;
        else
            curent_min = x, l_min = r_min = i;

        if(curent_max > smax)
            smax = curent_max, L_max = l_max, R_max = r_max;

        if(curent_min < smin)
            smin = curent_min, L_min = l_min, R_min = r_min;

        total += x;
    }

    if(smax > (total - smin))
        g << smax <<" "<<L_max <<" "<<(R_max - L_max + 1);

    else
        g <<total - smin <<" "<<R_min+1<<" "<<(n-R_min + L_min-1);
}