Pagini recente » Cod sursa (job #263775) | Cod sursa (job #2568339) | Cod sursa (job #757083) | Cod sursa (job #2953932) | Cod sursa (job #2304557)
#include <fstream>
using namespace std;
ifstream in("deque.in");
ofstream out("deque.out");
int dq[5000001];
long long v[5000001];
int main(){
int st=0, dr=-1, k, n;
long long 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;
}