Cod sursa(job #2108009)

Utilizator AlexPop28Pop Alex-Nicolae AlexPop28 Data 17 ianuarie 2018 20:43:34
Problema Deque Scor 100
Compilator cpp Status done
Runda Arhiva educationala Marime 0.63 kb
#define NMax 5000005
#include <cstdio>
using namespace std;

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