Pagini recente » Cod sursa (job #2182603) | Cod sursa (job #3138279) | Cod sursa (job #3183478) | Cod sursa (job #2883257) | Cod sursa (job #3250697)
#include <fstream>
using namespace std;
ifstream in("deque.in");
ofstream out("deque.out");
int v[5000001], d[5000001];
int main(){
int n,k; in>>n>>k;
for(int i=1;i<=n;i++){
in>>v[i];
}
long long s=0;
int p,u;
d[1]=1; p=u=1;
if(k==1)s=s+v[1];
for(int i =2; i <=n; i++){
// d[p]........d[u] ( d[u]==i-1 )
// d[p]....d[u] apartin de la i-k ......i-1
// v[ d[p]] minimul
// apare v[i]
if(d[p] <= i-k) p++;
while(u>=p && v[d[u]]>=v[i]) u--;
u++;
d[u]=i;
if(i>=k)s=s+v[d[p]];
}
out<<s;
return 0;
}