Cod sursa(job #3289311)

Utilizator bagae123Burlacu Andrei bagae123 Data 26 martie 2025 15:09:21
Problema Buline Scor 20
Compilator cpp-64 Status done
Runda Arhiva de probleme Marime 1.1 kb
#include <fstream>

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

const int Nmax = 200000;
int v[2 * Nmax + 5];

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

    for (int i = 1; i <= n; i++) {
        int x, p;
        fin >> x >> p;
        v[i] = (p == 1) ? x : -x;
        v[n + i] = v[i]; // Extindem vectorul pentru circularitate
    }

    int maxSum = -1e9, curSum = 0;
    int bestStart = 1, bestLength = n;
    int start = 1;

    for (int i = 1; i <= 2 * n; i++) {
        if (curSum < 0) {
            curSum = 0;
            start = i; // Începem o nouă secvență
        }

        curSum += v[i];
        int length = i - start + 1;

        if (length > n) break; // Ne asigurăm că secvența nu depășește N

        if (curSum > maxSum || (curSum == maxSum && (start < bestStart || (start == bestStart && length < bestLength)))) {
            maxSum = curSum;
            bestStart = start;
            bestLength = length;
        }
    }

    fout << maxSum << " " << ((bestStart - 1) % n) + 1 << " " << bestLength;
    return 0;
}