Cod sursa(job #1712140)

Utilizator StepHoria Stefan Step Data 2 iunie 2016 10:03:13
Problema Deque Scor 100
Compilator cpp Status done
Runda Arhiva educationala Marime 0.55 kb
#include <iostream>
#include <fstream>
using namespace std;
ifstream f("deque.in");
ofstream g("deque.out");
const int N=5000001;
int v[N],dq[N],st,dr=-1,n,k,i;
void stanga (int i)
{
    if  (dq[st]==i-k)
        st++;
}
void dreapta (int i)
{
    while (st<=dr && v[i]<=v[dq[dr]])
    {
        dr--;
    }
    dq [++dr]=i;
}
int main ()
{
    long long s=0;
    f>>n>>k;
    for (i=1; i<=n; i++)
        f>>v[i];
    for (i=1; i<=n; i++)
    {
        stanga (i);
        dreapta(i);
        if (i>=k)
            s+=v[dq[st]];
    }
    g<<s;
    return 0;
}