Cod sursa(job #2897801)

Utilizator DastasIonescu Vlad Dastas Data 4 mai 2022 20:35:14
Problema Deque Scor 25
Compilator cpp-32 Status done
Runda Arhiva educationala Marime 1.2 kb
/******************************************************************************

                              Online C++ Compiler.
               Code, Compile, Run and Debug C++ program online.
Write your code in this editor and press "Run" button to compile and execute it.

*******************************************************************************/

#include <iostream>
#include <deque>
#include <vector>
#include <fstream>

using namespace std;

ifstream in("deque.in");
ofstream out("deque.out");

int main()
{
    int n, k;
    vector<int> a;//{-7, 9, 2, 4, -1, 5, 6, 7, 1};
    deque<int> d;
    
    in >> n >> k;

    /*
    Complexitate:
    A. *O(n*k)*
    B. **O(n)**, complexitate amortizata
    C. O(k)
    D. *O(n log k)*
    */
    
    int numOps = 0;
    int result = 0;
    for (int i = 0; i < n; ++i) {
        int x;
        in >> x;
        a.push_back(x);
        while (d.size() > 0 && a[i] <= a[ d.back() ]) {
            d.pop_back();
            ++numOps;
        }
        d.push_back(i);
        if (d.front() == i - k) {
            d.pop_front();
        }
        
        if (i + 1 >= k) {
            result += a[ d.front() ];
        }
    }
    
    out << result;
    return 0;
}