Cod sursa(job #3304790)

Utilizator Cyb3rBoltSbora Ioan-David Cyb3rBolt Data 27 iulie 2025 13:17:32
Problema Buline Scor 20
Compilator cpp-64 Status done
Runda Arhiva de probleme Marime 0.9 kb
#include <bits/stdc++.h>

using namespace std;
ifstream fin("buline.in");
ofstream fout("buline.out");
int n, v[400010];

int main()
{
    fin >> n;
    for(int i=1; i<=n; i++) {
        int x, color; fin >> x >> color;
        if(color == 0) v[i] = v[i + n] = -x;
        else v[i] = v[i + n] = x;
    }
    int sumMax = v[1], poz = 1, lung = 1;
    int sumCurent = v[1], st = 1;
    for(int i=2; i<=2*n; i++) {
        if(sumCurent + v[i] > v[i]) sumCurent += v[i];
        else sumCurent = v[i], st = i;
        if(sumCurent > sumMax) sumMax = sumCurent, poz = st, lung = i - st + 1;
        else if(sumCurent == sumMax) {
            if(st < poz) poz = st, lung = i - st + 1;
            else if(st == poz && i - st + 1 < lung) lung = i - st + 1;
        }
        if(st > n) break;
        if(i - st + 1 == n) break;
    }
    fout << sumMax << " " << poz << " " << lung;

    return 0;
}