Cod sursa(job #1257741)

Utilizator Maxim97Maxim Andrei Maxim97 Data 8 noiembrie 2014 10:01:28
Problema Deque Scor 100
Compilator cpp Status done
Runda Arhiva educationala Marime 0.64 kb
#include <cstdio>
#include <deque>

using namespace std;
FILE *in, *o;

int n, k;
int v[5000008];
deque <int> dq;
long long int s;

int main()
{
    int i;
    in=fopen("deque.in","r");
    fscanf(in,"%d%d",&n,&k);
    for(i=1;i<=n;i++)
        fscanf(in,"%d",&v[i]);
    fclose(in);
    for(i=1;i<=n;i++)
    {
        if(!dq.empty()&&dq.front()==(i-k))
            dq.pop_front();
        while(!dq.empty()&&v[dq.back()]>v[i])
            dq.pop_back();
        dq.push_back(i);
        if(i>=k)
            s+=v[dq.front()];
    }
    o=fopen("deque.out","w");
    fprintf(o,"%lld\n",s);
    fclose(o);
    return 0;
}