Pagini recente » Cod sursa (job #148094) | Cod sursa (job #2434245) | Cod sursa (job #793147) | Cod sursa (job #1582819) | Cod sursa (job #3162557)
#include <iostream>
#include <fstream>
#include <climits>
using namespace std;
ifstream fin("deque.in");
ofstream fout("deque.out");
int v[5000001],dq[5000001],n,k,i;///deq pozitiile din v
long long s=0;
int main()
{
fin>>n>>k;
int st=0,dr=0;
v[0]=INT_MIN;
for(int i=1;i<=n;i++){
fin>>v[i];
while(i-dq[st]+1>k){ ///elimin de la inceput deoarece lung secv ce se termina in i este mai mare decat k
st++;
}
while(st<=dr && v[i]<=v[dq[dr]]){
dr--;
}
dq[++dr]=i;
if(i>=k){
s+=v[dq[st]];
}
}
fout<<s;
return 0;
}