Cod sursa(job #1146508)

Utilizator ArmandNMArmand Nicolicioiu ArmandNM Data 19 martie 2014 01:36:00
Problema Deque Scor 100
Compilator cpp Status done
Runda Arhiva educationala Marime 0.61 kb
#include <fstream>

const int NMAX = 5000005;

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

int N,K,Deque[NMAX],front,back,A[NMAX];
long long sol;

int main()
{
    f >> N >> K;

    for (int i = 1; i <= N; ++i)
    {
        f >> A[i];
    }

    back = 0;
    front = 1;

    for (int i = 1; i <= N; ++i)
    {
        while (front <= back && A[i] <= A[ Deque[back] ])
            back--;
        Deque[++back] = i;

        if (Deque[front] == i-K)
            front ++;

        if (i >= K)
            sol += A[ Deque[front] ];
    }

    g << sol;
}