Cod sursa(job #1567720)

Utilizator TopiAlexTopala Alexandru TopiAlex Data 13 ianuarie 2016 18:03:37
Problema Deque Scor 100
Compilator cpp Status done
Runda Arhiva educationala Marime 0.73 kb
#include <stdio.h>
#include <deque>
#define N_MAX 5000003
using namespace std;

int n, k;
int val[N_MAX];
deque<int> poz;
long long s;

inline void citire();

int main()
{
    citire();

    s = 0;
    for (int i = 1; i <= n; ++i){
        while (!poz.empty() && val[i] < val[poz.back()])
            poz.pop_back();

        poz.push_back(i);

        if (poz.front() == i - k)
            poz.pop_front();

        if (i >= k)
           s += val[poz.front()];
    }

    printf("%lld\n", s);

    return 0;
}

inline void citire(){
    freopen("deque.in", "r", stdin);
    freopen("deque.out", "w", stdout);

    scanf("%d%d", &n, &k);

    for (int i = 1; i <= n; ++i)
        scanf("%d", &val[i]);
}