Cod sursa(job #1320178)

Utilizator eneandradaEne Oana-Andrada eneandrada Data 17 ianuarie 2015 18:02:38
Problema Deque Scor 100
Compilator cpp Status done
Runda Arhiva educationala Marime 0.66 kb
#include <iostream>
#include <fstream>

using namespace std;

ifstream f("deque.in");
ofstream g("deque.out");

int N,K,Q[5000005],v[5000005];
long long s=0;

int main()
{
    int i,Front=1,Back=0; //coada vida; in ea se vor retine pozitiile elementelor din vectorul initial

    f>>N>>K;
    for(i=1;i<=N;i++)
        f>>v[i];
    for(i=1;i<=N;i++)
    {
        while(Front<=Back && v[i]<=v[Q[Back]]) //elementul curent e mai mic decat ultimul din coada
            Back--;
        Q[++Back]=i;
        if(Q[Front]==i-K)
            Front++;
        if(i>=K)
            s=s+v[Q[Front]];
    }
    g<<s;
    f.close(); g.close();
    return 0;
}