Cod sursa(job #598189)

Utilizator deneoAdrian Craciun deneo Data 24 iunie 2011 19:39:44
Problema Deque Scor 100
Compilator cpp Status done
Runda Arhiva educationala Marime 0.65 kb
#include<fstream>
using namespace std;

#define INF 0x3f3f3f3f

int dq[5000010], v[5000010], n, k, st = 1, fn = 0;

void insert(int poz) {
    while(st <= fn && v[dq[fn]] > v[poz]) --fn;
    dq[++fn] = poz;
}

int getMin(int minPoz) {
    while(st <= fn && dq[st] < minPoz) ++st;
    return v[dq[st]];
}

int main() {
    long long i, sum = 0;

    ifstream f("deque.in");
    ofstream g("deque.out");
    f >> n >> k;
    for(i = 1; i <= n; ++i)
        f >> v[i];

    for(i = 1; i <= k - 1; ++i)
        insert(i);

    for(i = k; i <= n; ++i) {
        insert(i);
        sum += getMin(i - k + 1);
    }

    g << sum << '\n';
    g.close();
    return 0;
}