Cod sursa(job #1148031)

Utilizator vazanIonescu Victor Razvan vazan Data 20 martie 2014 13:02:35
Problema Deque Scor 0
Compilator cpp Status done
Runda Arhiva educationala Marime 0.67 kb
#include<cstdio>
#include<deque>
using namespace std;
deque <int> dq;
int v[5000002];
int main()
{
    FILE *in=fopen("deque.in", "r"),
         *out=fopen("deque.out", "w");
    int n, k, i, t;
    long long rez=0;
    fscanf(in, "%d%d", &n, &k);
    v[0]=0;
    for(i=1; i<=n; ++i)
    {
        fscanf(in, "%d", &t);
        v[i]=t;
    }
    fclose(in);
    for(i=1; i<=n; ++i)
    {
        while(!dq.empty() && v[dq.back()]>=v[i])
            dq.pop_back();
        dq.push_back(i);
        if(dq.front()+k==i)
            dq.pop_front();
        if(i>=k)
            rez+=v[dq.front()];
    }
    fprintf(out, "%I64d", rez);
    fclose(out);
}