Cod sursa(job #2757152)

Utilizator andrei_culerdaCulerda Andrei andrei_culerda Data 4 iunie 2021 09:30:07
Problema Buline Scor 100
Compilator cpp-64 Status done
Runda Arhiva de probleme Marime 1.38 kb
#include <fstream>

using namespace std;

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

const int N = 200000;
int v[N+5];

int main()
{
    int n, stot = 0;
    bool semn;
    fin >> n;
    for(int i = 1; i <= n; i++)
    {
        fin >> v[i] >> semn;
        if(semn == 0)
            v[i] = - v[i];
            stot += v[i];
    }
    int sc, scmin, scmax, ic, stmin, drmin, stmax, drmax;
    sc = scmax = v[1];
    ic = stmax = drmax = 1;
    for(int i = 2; i <= n; i++)
    {
        if(sc + v[i] < v[i])
        {
            sc = v[i];
            ic = i;
        }
        else
            sc += v[i];
        if(sc > scmax)
        {
            scmax = sc;
            stmax = ic;
            drmax = i;
        }
    }

    ic = stmin = drmin = 1;
    sc = scmin = v[1];
    for(int i = 2; i <= n; i++)
    {
        if(sc + v[i] >= v[i])
        {
            sc = v[i];
            ic = i;
        }
        else
            sc += v[i];
        if(sc < scmin)
        {
            scmin = sc;
            stmin = ic;
            drmin = i;
        }
    }
    int scirc = stot - scmin;
    if(scirc > scmax)
    {
        fout << scirc << " " << drmin + 1 << " " << n - (drmin - stmin + 1) << "\n";
    }
    else
    {
        fout << scmax << " " << stmax << " " <<  drmax - stmax + 1 << "\n";
    }
    return 0;
}