Cod sursa(job #2405864)

Utilizator SirVSbiVidam Szablocs SirVSbi Data 15 aprilie 2019 08:07:28
Problema Deque Scor 85
Compilator cpp-64 Status done
Runda Arhiva educationala Marime 0.86 kb
#include <iostream>
#include <fstream>
#include <deque>
#include <vector>

#define ll long long
using namespace std;

vector<int> nums;


ll solve(int n, int k){

    deque<ll> q(k);

    long long res = 0;
    for(int i = 0; i < k; ++i){

        while((!q.empty()) && nums[i] <= nums[q.front()])
            q.pop_front();

        q.push_back(i);
    }


    for(int i = k ; i <= n; ++i){
        res += nums[q.front()];
        while((!q.empty()) && q.front() <= i - k)
            q.pop_front();

        while((!q.empty()) && nums[i] <= nums[q.front()])
            q.pop_front();
        q.push_back(i);
    }


    return res;



}



int main(){
    ifstream be("deque.in");
    ofstream ki("deque.out");


    int n, k;
    be >> n >> k;
    int temp;
    for(int i = 0; i < n; i++){
        be >> temp;
        nums.push_back(temp);
    }

    ki << solve(n, k);

}