Cod sursa(job #2043488)

Utilizator borscalinCalin-Stefan Georgescu borscalin Data 20 octombrie 2017 09:35:08
Problema Deque Scor 25
Compilator c Status done
Runda Arhiva educationala Marime 0.65 kb
#include <stdio.h>
#include <stdlib.h>
#define NMAX 5000000

int d[1 + NMAX];
int v[1 + NMAX];

int main(){
    int n, k;
    FILE *f = fopen("deque.in", "r");
    fscanf(f, "%d%d", &n, &k);
    for (int i = 0; i < n; ++i)
        fscanf(f, "%d", &v[i]);
    fclose(f);
    int st = 0, dr = -1;
    long long s = 0;
    for (int i = 0; i < n; ++i) {
            while (st <= dr && v[i] <= v[d[dr]])
                --dr;
            d[++dr] = i;
            if (st <= dr && d[st] == i - k)
                ++st;
            if (i >= k - 1)
                s += v[d[st]];
    }
    f = fopen("deque.out", "w");
    fprintf(f, "%d", s);
    fclose(f);
    return 0;
}