Cod sursa(job #2733272)

Utilizator VladS23Vlad Seba VladS23 Data 30 martie 2021 10:32:48
Problema Buline Scor 100
Compilator cpp-64 Status done
Runda Arhiva de probleme Marime 1.36 kb
#include <fstream>

using namespace std;

const int NMAX = 2e5;

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

int v[NMAX + 5];

struct SUM
{
    int val;
    int st;
    int dr;
    SUM()
    {
        val = 0;
        st = 1;
    }
};

SUM scmin, scmax;

int maxi = 0, mini = ~(1 << 31), stmax, stmin, drmax, drmin;
int sum;

int main()
{
    int n, nr, i;
    bool c;
    cin >> n;
    for (int i = 1; i <= n; i++)
    {
        cin >> nr >> c;
        nr = (c == 1) ? nr : -nr;
        sum += nr;

        if (scmax.val + nr < nr)
        {
            scmax.val = nr;
            scmax.st = i;
        }
        else
            scmax.val += nr;

        if (scmax.val > maxi)
        {
            maxi = scmax.val;
            stmax = scmax.st;
            drmax = i;
        }

        //-------------------------------------//

        if (scmin.val + nr > nr)
        {
            scmin.val = nr;
            scmin.st = i;
        }
        else
            scmin.val += nr;

        if (scmin.val < mini)
        {
            mini = scmin.val;
            stmin = scmin.st;
            drmin = i;
        }
    }
    if (sum - mini < maxi)
        cout << maxi << ' ' << stmax << ' ' << drmax - stmax + 1;
    else
        cout << sum - mini << ' ' << drmin + 1 << ' ' << n - (drmin - stmin + 1);
}