Cod sursa(job #2155433)

Utilizator andrei.gramescuAndrei Gramescu andrei.gramescu Data 7 martie 2018 20:45:23
Problema Deque Scor 25
Compilator cpp Status done
Runda Arhiva educationala Marime 0.66 kb
#include <cstdio>
#include <deque>
using namespace std;
#define NMAX 5000005

int n, k, sum, last, a[NMAX], i;
deque<int> deq;

int main(){

    FILE *fin, *fout;
    fin = fopen("deque.in", "r");
    fout = fopen("deque.out", "w");

    fscanf(fin, "%d %d", &n, &k);
    for(i=0; i<n; i++)
        fscanf(fin, "%d ", &a[i]);

    for(i=0; i<n; i++){
        while(!deq.empty() && a[deq.back()] > a[i])
            deq.pop_back();
        deq.push_back(i);

        if(i - k + 1 >= 0)
            sum += a[deq.front()];

        if(deq.front() < (i+1) - k + 1)
            deq.pop_front();
    }

    fprintf(fout, "%d", sum);

    return 0;
}