Pagini recente » Cod sursa (job #2622428) | Cod sursa (job #170211) | Cod sursa (job #3132521) | Cod sursa (job #1194226) | Cod sursa (job #2304548)
#include <fstream>
using namespace std;
ifstream in("deque.in");
ofstream out("deque.out");
int dq[5000001], v[5000001];
int main(){
int st=0, dr=-1, k, n, s=0;
in>>n>>k;
for(int i=0; i<n; i++){
in>>v[i];
}
for(int i=0; i<n; i++){
//elimin din stanga ceea ce nu exista in secventa curenta
if(st<=dr && dq[st]==i-k){
st++;
}
//elimin din dreapta ceea ce nu mai conteaza
while(st<=dr && v[i]<=v[dq[dr]]){
dr--;
}
//adaug in daque
dq[++dr]=i;
//actualizez rez global
if(i>=k-1){
s+=v[dq[st]];
}
}
out<<s;
return 0;
}