Cod sursa(job #3344890)

Utilizator fujyalexAlex Avram fujyalex Data 6 martie 2026 14:23:27
Problema Buline Scor 20
Compilator cpp-64 Status done
Runda Arhiva de probleme Marime 1.24 kb
#include <iostream>
#include <fstream>
using namespace std;

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

int main()
{
    int N;
    fin >> N;

    int a[200001];

    for(int i = 1; i <= N; i++)
    {
        int x, c;
        fin >> x >> c;

        if(c == 1) a[i] = x;
        else a[i] = -x;
    }

    int sum = 0, bestSum = -2000000000;
    int start = 1, bestStart = 1, bestEnd = 1;

    for(int i = 1; i <= N; i++)
    {
        sum += a[i];

        if(sum > bestSum)
        {
            bestSum = sum;
            bestStart = start;
            bestEnd = i;
        }

        if(sum < 0)
        {
            sum = 0;
            start = i + 1;
        }
    }

    int total = 0;
    for(int i = 1; i <= N; i++)
        total += a[i];

    int minSum = 2000000000, cur = 0;

    for(int i = 1; i <= N; i++)
    {
        cur += a[i];

        if(cur < minSum)
            minSum = cur;

        if(cur > 0)
            cur = 0;
    }

    int circular = total - minSum;

    if(circular > bestSum)
    {
        fout << circular << " 1 " << N;
    }
    else
    {
        fout << bestSum << " " << bestStart << " " << bestEnd - bestStart + 1;
    }

    return 0;
}