Pagini recente » Cod sursa (job #175154) | Cod sursa (job #1895649) | Cod sursa (job #613229) | Cod sursa (job #933907) | Cod sursa (job #971978)
Cod sursa(job #971978)
#include <cstdio>
#include <deque>
using namespace std;
long N, K;
long long sum;
deque<long> minn;
deque<long> poz;
int main() {
long i, j;
long x;
freopen("deque.in", "r", stdin);
freopen("deque.out", "w", stdout);
scanf("%ld %ld", &N, &K);
for(i = 1; i <= K; i++) {
scanf("%ld", &x);
while(!minn.empty() && x < minn.back()) {
poz.pop_back();
minn.pop_back();
}
minn.push_back(x);
poz.push_back(i);
}
sum = minn.front();
for(i = K + 1; i <= N; i++) {
scanf("%ld", &x);
while(!minn.empty() && x < minn.back()) {
minn.pop_back();
poz.pop_back();
}
if(!minn.empty() && poz.front() == i - K) {
poz.pop_front();
minn.pop_front();
}
minn.push_back(x);
poz.push_back(i);
sum += minn.front();
}
printf("%lld", sum);
return 0;
}