Cod sursa(job #2932617)
| Utilizator | Data | 3 noiembrie 2022 12:21:19 | |
|---|---|---|---|
| Problema | Deque | Scor | 100 |
| Compilator | cpp-64 | Status | done |
| Runda | Arhiva educationala | Marime | 0.77 kb |
#include <bits/stdc++.h>
using namespace std;
ifstream in ("deque.in");
ofstream out("deque.out");
#define maxN 5000000
#define INF 10000000
int v[maxN+1];
int coada[maxN+1];
int main(){
int n,k,st=0,fn=0;
v[0]=-INF;
long long s=0;
in>>n>>k;
for(int i=1;i<=n;i++){
in>>v[i];
if(i<k){
while(v[i]<v[coada[fn]] && fn>=st){
fn--;
}
fn++;
coada[fn]=i;
}
else{
if(i-k>=coada[st]){
st++;
}
while(v[i]<v[coada[fn]] && fn>=st){
fn--;
}
fn++;
coada[fn]=i;
s+=v[coada[st]];
}
}
out<<s;
return 0;
}
