Cod sursa(job #2798963)

Utilizator andrei_C1Andrei Chertes andrei_C1 Data 12 noiembrie 2021 09:59:43
Problema Deque Scor 100
Compilator cpp-64 Status done
Runda Arhiva educationala Marime 0.74 kb
#include <stdio.h>
#include <deque>

FILE *fin, *fout;

const int NMAX = 5e6;

int N, K;
long long s;
int v[NMAX + 1];
std :: deque<int>q;

int main() {
    fin = fopen("deque.in", "r");
    fout = fopen("deque.out", "w");

    fscanf(fin, "%d %d", &N, &K);
    for(int i = 1; i <= N; i++) {
        fscanf(fin, "%d", &v[i]);
    }

    for(int i = 1; i <= N; i++) {
        while(!q.empty() && v[q.back()] >= v[i]) {
            q.pop_back();
        }

        q.push_back(i);

        if(i >= K) {
            while(q.front() <= i - K) {
                q.pop_front();
            }
            s += v[q.front()];
        }
    }

    fprintf(fout, "%lld\n", s);

    fclose(fin);
    fclose(fout);
    return 0;
}