Submission #1326519

#TimeUsernameProblemLanguageResultExecution timeMemory
1326519GabrielFeast (NOI19_feast)C++20
30 / 100
33 ms5040 KiB
#include "bits/stdc++.h"
using namespace std;
int main(){
    ios_base::sync_with_stdio(0);
    cin.tie(0);
    int n, k;
    cin>>n>>k;
    k--;
    deque<long long> a(n);
    long long r = 0;
    for(int i = 0; i < n; i++) cin>>a[i];
    while(!a.empty() and a[0] < 0){
        a.pop_front();
    }
    while(!a.empty() and a.back() < 0){
        a.pop_back();
    }
    vector< pair<long long, pair<int, int> > > Borrar;
    long long Suma = 0;
    a.push_back(0);
    n = a.size();
    for(int i = 0; i < n; i++){
        if(a[i] < 0){
            if(Suma == 0) Borrar.push_back({0LL, {i, -2}});
            Suma += a[i];
        } else if(Suma != 0){
            Borrar.back().first = Suma;
            Borrar.back().second.second = i;
            Suma = 0;
        }
    }
    sort(Borrar.begin(), Borrar.end());
    for(int i = 0; i < k and i < Borrar.size(); i++){
        for(; Borrar[i].second.first < Borrar[i].second.second; Borrar[i].second.first++){
            a[Borrar[i].second.first] = -0;
        }
    }
    Suma = 0;
    for(auto E: a){
        Suma += E;
        Suma = max(0LL, Suma);
        r = max(Suma, r);
    }
    cout<<r;
    return 0;
}
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...