Cod sursa(job #928175)

Utilizator teoionescuIonescu Teodor teoionescu Data 26 martie 2013 12:08:26
Problema Deque Scor 100
Compilator cpp Status done
Runda Arhiva educationala Marime 0.5 kb
#include<fstream>
#define N 5000001
using namespace std;
ifstream in("deque.in");
ofstream out("deque.out");
int i,n,k,v[N],dq[N],st=1,dr;
long long s;
void stanga(int i){
    if(i-dq[st]==k) st++;
}
void dreapta(int i){
    while(st<=dr && v[i]<=v[dq[dr]])
        dr--;
}
int main(){
    in>>n>>k;
    for(i=1;i<=n;i++) in>>v[i];
    for(i=1;i<=n;i++){
        if(i>k) stanga(i);
        dreapta(i);
        dq[++dr]=i;
        if(i>=k) s+=v[dq[st]];
    }
    out<<s;
    return 0;
}