Cod sursa(job #2038061)

Utilizator ruxi.icleanuRuxandra Icleanu ruxi.icleanu Data 13 octombrie 2017 09:59:17
Problema Deque Scor 100
Compilator cpp Status done
Runda Arhiva educationala Marime 0.73 kb
#include <stdio.h>
#include <stdlib.h>
#include <deque>

using namespace std;

#define MAXN 5000000

int v[MAXN];
deque <int> deq;

int main()
{
    int n, k, i;
    long long sum_min;
    FILE *fi, *fo;
    fi = fopen("deque.in", "r");
    fo = fopen("deque.out", "w");
    fscanf(fi, "%d%d", &n, &k);
    for(i=0; i<n; i++)
        fscanf(fi, "%d", &v[i]);

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

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

        if(i>=k-1)
            sum_min+=v[deq.front()];
    }
    fprintf(fo, "%lld", sum_min);
    fclose(fi);
    fclose(fo);
    return 0;
}