Cod sursa(job #1824112)

Utilizator lucametehauDart Monkey lucametehau Data 7 decembrie 2016 12:56:29
Problema Deque Scor 100
Compilator cpp Status done
Runda Arhiva educationala Marime 0.52 kb
#include <fstream>
#define N 5000005

using namespace std;
ifstream cin("deque.in");
ofstream cout("deque.out");
int n,k,st,dr=-1,d[N],i,v[N];
long long s;
inline void stanga(int i)
{
    if(i-k==d[st])
        st++;
}
inline void dreapta(int i)
{
    while(st<=dr&&v[i]<=v[d[dr]])
        dr--;
    d[++dr]=i;
}
int main()
{
    cin>>n>>k;
    for(i=1;i<=n;i++)
    {
        cin>>v[i];
        dreapta(i);
        if(i>=k)
        {
            stanga(i);
            s+=v[d[st]];
        }
    }
    cout<<s;
    return 0;
}