Cod sursa(job #1028622)

Utilizator CostanMiriamCostan Miriam CostanMiriam Data 14 noiembrie 2013 14:16:36
Problema Deque Scor 100
Compilator cpp Status done
Runda Arhiva educationala Marime 0.59 kb
#include<cstdio>
#define DIM 5000010

int V[DIM];
int D[DIM];

long long sum;

int i, n, k, p, u;

int main() {
    FILE *fin = fopen("deque.in","r");
    FILE *fout= fopen("deque.out","w");
    fscanf(fin,"%d %d",&n,&k);
    p = 1;
    u = 0;
    for (i=1;i<=n;i++) {
        fscanf(fin,"%d",&V[i]);
    }
    p = 1;
    u = 0;
    for (i=1;i<=n;i++) {
        while (p<=u && V[ D[u] ] >= V[i])
            u--;
        D[++u] = i;
        if (i-D[p] >= k)
            p++;
        if (i>=k)
            sum += V[D[p]];
    }
    fprintf(fout,"%lld\n",sum);
    return 0;
}