Pagini recente » Borderou de evaluare (job #578049) | Cod sursa (job #260470) | Cod sursa (job #1311988) | Cod sursa (job #575555) | Cod sursa (job #380399)
Cod sursa(job #380399)
#include <fstream>
using namespace std;
ifstream in("deque.in");
ofstream out("deque.out");
int dq[5000001];
int v[5000001];
int n,k,i,st=1,dr=0,s=0;
inline void stanga(int i){
if(dq[st]==i-k){
st++;
}
}
void dreapta(int i){
while ( (st<=dr) && ( v[i]<=v[dq[dr]])){
dr--;
}
dq[++dr]=i;
}
int main(){
in>>n>>k;
st=1; dr=0;
for(i=1;i<=n;i++){
in>>v[i];
}
for(i=1;i<=n;i++){
stanga(i);
dreapta(i);
if(i>=k){
s=s+v[dq[st]];
}
}
out<<s;
return 0;
}