Cod sursa(job #1146966)

Utilizator ThomasFMI Suditu Thomas Thomas Data 19 martie 2014 14:30:44
Problema Deque Scor 100
Compilator cpp Status done
Runda Arhiva educationala Marime 0.74 kb
#include <fstream>
#include <deque>
using namespace std;

#define NMax 5000005

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

int n,k;
long long sum;
long long A[NMax];
deque<int> dq;

int main()
{
    int i;

    f>>n>>k;
    for(i=1;i<=n;i++) f>>A[i];

    for(i=1;i<k;i++)
    {
        while(!dq.empty())
        {
            if(A[dq.back()]>A[i]) dq.pop_back();
            else break;
        }
        dq.push_back(i);
    }

    for(i=k;i<=n;i++)
    {
        while(!dq.empty())
        {
            if(A[dq.back()]>A[i]) dq.pop_back();
            else break;
        }
        dq.push_back(i);

        sum+=A[dq.front()];
        if(dq.front()==i-k+1) dq.pop_front();
    }

    g<<sum<<"\n";

    f.close();
    g.close();
    return 0;
}