Cod sursa(job #3277328)

Utilizator jumaracosminJumara Cosmin-Mihai jumaracosmin Data 15 februarie 2025 19:51:06
Problema Buline Scor 20
Compilator cpp-64 Status done
Runda Arhiva de probleme Marime 1.15 kb
#include <bits/stdc++.h>

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

const int SIZE = 2e5 + 5;

int n;
bool restarted = false;
int s, smax, lgmax, lg, start, start_max;
int a[SIZE];


int64_t max(std::vector<int64_t> v){ return *std::max_element(v.begin(), v.end()); }

int64_t min(std::vector<int64_t> v){ return *std::min_element(v.begin(), v.end()); }

int main() 
{
    fin >> n;
    for(int i = 1; i <= n; ++i)
    {
        int x, y;
        fin >> x >> y;
        a[i] = x * (y ? 1 : -1);
    }
    
    smax = s = a[1];
    lgmax = lg = 1;
    start_max = start = 1;

    for(int i = 2; i <= n; ++i)
    {
        if(i == start && restarted)
            break;
        
        if(s + a[i] >= a[i])
            s += a[i], lg++;
        else
            s = a[i], lg = 1, start = i;
        
        if(s > smax || (s == smax && (start_max > start || (start_max == start && lg < lgmax))))
            smax = s, lgmax = lg, start_max = start;
        
        if(i == n && !restarted)
            i = 0, restarted = true;
    }

    fout << smax << " " << start_max << " " << lgmax;

    return 0;
}