Cod sursa(job #2548296)

Utilizator marius004scarlat marius marius004 Data 16 februarie 2020 14:41:44
Problema Buline Scor 100
Compilator cpp-64 Status done
Runda Arhiva de probleme Marime 0.95 kb
#include <iostream>
#include <fstream>
#include <deque>

std::ifstream f("buline.in");
std::ofstream g("buline.out");

const int NMAX =  400'005;
int n,v[NMAX],op,s[NMAX],maxx,I,J;
std::deque<int>d;

int main(){
    
    f >> n;
    
    for(int i = 1;i <= n;++i){
        
        f >> v[i] >> op;
        
        if(op == 0)
            v[i] = -v[i];
        
        v[n + i] = v[i];
    }
    
    for(int i = 1;i <= 2 * n;++i)
        s[i] = s[i - 1] + v[i];
    
    maxx = -((1LL << 31) - 1);
    d.push_back(1);
    
    for(int i = 1;i <= 2 * n;++i){
        
        while(!d.empty() && s[i] <= s[d.back()])
            d.pop_back();
        
        d.push_back(i);
        
        if(i - d.front() == n)
            d.pop_front();
        
        if(s[i] - s[d.front()] > maxx){
            maxx = s[i] - s[d.front()];
            I = d.front() + 1;
            J = i;
        }
    }
    
    g << maxx << ' ' << I << ' ' << J - I + 1;
    
    return 0;
}