Cod sursa(job #578263)

Utilizator AndrewTheGreatAndrei Alexandrescu AndrewTheGreat Data 11 aprilie 2011 10:16:08
Problema Deque Scor 60
Compilator cpp Status done
Runda Arhiva educationala Marime 0.73 kb
#include <fstream>
#include <deque>
#define i64 long long

using namespace std;

i64 A[5000100];
deque <i64> D;

int main()
{
    ifstream in ("deque.in");

    i64 N, K, S, i;

    in >> N >> K;

    for(i = 1; i <= N; i++)
        in >> A[i];

    for(i = 1; i <= K; i++)
    {
        while(!D.empty() && A[D.back()] > A[i])
            D.pop_back();
        D.push_back(i);
    }

    S = A[D.front()];

    for(i = 1; i <= N - K; i++)
    {
        if(D.front() == i)
            D.pop_front();
        while(!D.empty() && A[D.back()] > A[i + K])
            D.pop_back();
        D.push_back( i + K );
        S += A[D.front()];
    }

    ofstream out("deque.out");
    out << S;

    return 0;
}