Cod sursa(job #963318)

Utilizator alex.glontGlontaru Alexandru alex.glont Data 17 iunie 2013 09:55:40
Problema Deque Scor 0
Compilator cpp Status done
Runda Arhiva educationala Marime 0.71 kb
#include<fstream>

using namespace std;

fstream in ( "deque.in ", ios::in ),
        out( "deque.out", ios::out);

int v[5000002], d[5000002], k, st=1, dr, n;
long long s;

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

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

int main(){
    in >> n >> k;
    for( int i=1 ; i<=n ; i++){
        in >> v[i];
    }
    int i;
    for( i=1 ; i<=k; i++) {
        dreapta(i);
        d[++dr]=i;


    }
    s+= v[d[st]];

    for( i=k+1; i<=n; i++){

        stanga(i);
        dreapta(i);
        d[++dr]=i;
        s+= v[d[st]];
    }
    out << s ;

    return 0;

}