Cod sursa(job #2037960)

Utilizator ruxi.icleanuRuxandra Icleanu ruxi.icleanu Data 12 octombrie 2017 23:47:06
Problema Deque Scor 85
Compilator cpp Status done
Runda Arhiva educationala Marime 0.8 kb
#include <stdlib.h>
#include <stdio.h>
#include <deque>

using namespace std;

#define MAXN 5000000

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

int main()
{
    int n, k, i, poz;
    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<k; i++)

    for(i=0; i<n; i++) {
        while(deq.empty()!=1 && v[i]<deq.back())
            deq.pop_back();
        if(deq.empty()==1)
            poz=i;
        deq.push_back(v[i]);
        if(i-k+1>poz)
            deq.pop_front();

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