Cod sursa(job #1782010)

Utilizator crazylamaRiclea Andrei crazylama Data 17 octombrie 2016 18:35:47
Problema Deque Scor 100
Compilator cpp Status done
Runda Arhiva educationala Marime 0.72 kb
#include <cstdio>
#include <cstdlib>

using namespace std;

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

int main()
{
    int n, k, prim = 1, ultim = 0;
    long long int rez = 0;
    fscanf(f, "%d %d", &n, &k);
    int *v = (int*)calloc(n + 1, sizeof(int));
    int *Deque = (int*)calloc(n + 1, sizeof(int));
    for (int i = 1; i <= n; i++)
        fscanf(f, "%d", &v[i]);
    for (int i = 1; i <= n; i++)
    {
        while (prim <= ultim && v[i] <= v[Deque[ultim]])
                ultim--;
        Deque[++ultim] = i;
        if (Deque[prim] == i - k)
            prim++;
        if (i >= k)
            rez += v[Deque[prim]];
    }
    fprintf(g, "%lld", rez);
    return 0;
}