Cod sursa(job #1804053)

Utilizator ZenoTeodor Anitoaei Zeno Data 12 noiembrie 2016 10:27:14
Problema Deque Scor 100
Compilator cpp Status done
Runda Arhiva educationala Marime 0.58 kb
#include <bits/stdc++.h>

using namespace std;

FILE *f = fopen("deque.in", "r");
FILE *g = fopen("deque.out", "w");

int n, k, st, dr;
int V[5000001], Deque[5000001];
long long s;

int main()
{
    fscanf(f, "%d %d", &n, &k);

    for(int i = 1; i <= n; i++)
        fscanf(f, "%d", &V[i]);

    st = 1, dr = 0;

    for(int i = 1; i <= n; i++)
    {
        while(V[i] <= V[Deque[dr]] && st <= dr) dr--;
        Deque[++dr] = i;

        if(Deque[st] == Deque[dr] - k) st++;

        if(i >= k) s += V[Deque[st]];

    }
    fprintf(g, "%lld", s);
    return 0;
}