Cod sursa(job #758426)

Utilizator thea35Mihai Ana thea35 Data 15 iunie 2012 17:07:42
Problema Deque Scor 25
Compilator cpp Status done
Runda Arhiva educationala Marime 0.58 kb
#include <iostream>
#include <fstream>

using namespace std;

const int MAX=5000001;

int v[MAX], dq[MAX], st=1, dr=1, K;

void stanga (int i)
{
    if(dq[st]==i-K)
        st++;
}

void dreapta (int i)
{
    while(st<=dr&&v[i]<=v[dq[dr]])
        dr--;
}

int main()
{
    ifstream in("deque.in");
    ofstream out("deque.out");
    int N,i,s=0;
    in>>N>>K;
    for(i=1; i<=N; i++)
        in>>v[i];
    for(i=1; i<=N; i++)
    {
        stanga(i);
        dreapta(i);
        dq[++dr]=i;
        if(i>=K) s+=v[dq[st]];
    }
    out<<s;
    return 0;
}