Cod sursa(job #1784396)

Utilizator elffikkVasile Ermicioi elffikk Data 19 octombrie 2016 23:37:44
Problema Deque Scor 0
Compilator cpp Status done
Runda Arhiva educationala Marime 0.9 kb
#include <iostream>
#include <fstream>
#include <vector>
using namespace std;

main() {
    ifstream cin("deque.in");
    //ofstream cout("deque.out");
    int K, N;
    cin>>N>>K;
    vector <int> a(N);
    vector<pair<int, int> >q;
    for (int i = 0; i < N; i++) {
        cin>>a[i];
    }

    int r = 0;
    for (int i = 0; i < K; i++) {
        while (q.size() > r && q[q.size()-1].first >= a[i]) {
            q.erase(q.end()-1);
        }
        q.push_back(make_pair(a[i], i));
    }
    long long sum = q[r].first;
    for (int i = K; i < N; i++) {
        //push in queue
        while (q.size() > r && q[q.size()-1].first >= a[i]) {
            q.erase(q.end()-1);
        }
        q.push_back(make_pair(a[i], i));
        //remove if not in current index
        while (q[r].second<i-K+1) {
            r++;
        }
        sum+=q[r].first;
    }
    cout<<sum;

}