Cod sursa(job #1522409)

Utilizator ThomasFMI Suditu Thomas Thomas Data 11 noiembrie 2015 18:03:53
Problema Deque Scor 100
Compilator cpp Status done
Runda Arhiva educationala Marime 0.8 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;
}