Pagini recente » Cod sursa (job #410583) | Cod sursa (job #2222710) | Cod sursa (job #1965233) | Cod sursa (job #2578335) | Cod sursa (job #2344551)
#include <iostream>
#include <fstream>
using namespace std;
ifstream in("deque.in");
ofstream out("deque.out");
const int NMAX = 5 * 1e6 + 1e2;
int n, k;
int v[NMAX];
int dq[NMAX];
int le = 1;
int ri;
long long res;
void go_left(int pos) {
if(pos - dq[le] == k)
le++;
}
void go_right(int pos) {
while(le <= ri && v[pos] <= v[dq[ri]])
ri--;
dq[++ri] = pos;
}
int main()
{
in >> n >> k;
for(int i = 1; i <= n; i++) {
in >> v[i];
go_left(i);
go_right(i);
if(i >= k)
res += v[dq[le]];
}
out << res << '\n';
in.close();
out.close();
return 0;
}