Cod sursa(job #2047235)

Utilizator whitewolfJon Snow whitewolf Data 24 octombrie 2017 17:41:52
Problema Deque Scor 100
Compilator cpp Status done
Runda Arhiva educationala Marime 0.74 kb
#include <bits/stdc++.h>

using namespace std;

const int nMax = 5000005;
int n, k, a[nMax];
long long ans;
deque <int> q;

void Read() {
    ifstream fin("deque.in");
    fin >> n >> k;
    for (int i = 1; i <= n; i++)
        fin >> a[i];
    fin.close();
}

void Solve() {
    for (int i = 1; i <= n; i++) {
        int x = a[i];
        while (!q.empty() && x <= a[q.back()])
            q.pop_back();
        q.push_back(i);
        if (i - q.front() >= k)
            q.pop_front();
        if (i >= k)
            ans += a[q.front()];
    }
}

void Write() {
    ofstream fout("deque.out");
    fout << ans << "\n";
    fout.close();
}

int main()
{
    Read();
    Solve();
    Write();
    return 0;
}