Pagini recente » Cod sursa (job #311570) | Cod sursa (job #1683958) | Cod sursa (job #1253886) | Cod sursa (job #516871) | Cod sursa (job #3250698)
#include <fstream>
#include <deque>
using namespace std;
ifstream in("deque.in");
ofstream out("deque.out");
int v[5000001];
deque <int> d;
int main(){
int n,k; in>>n>>k;
for(int i=1;i<=n;i++){
in>>v[i];
}
long long s=0;
d.push_back(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.front() <= i-k) d.pop_front();
while(!d.empty() && v[d.back()]>=v[i]) d.pop_back();
d.push_back(i);
if(i>=k)s=s+v[d.front()];
}
out<<s;
return 0;
}