Pagini recente » Cod sursa (job #186422) | Cod sursa (job #828617) | Cod sursa (job #527112) | Cod sursa (job #3170410) | Cod sursa (job #1784398)
#include <iostream>
#include <fstream>
#include <vector>
using namespace std;
main() {
ifstream cin("deque.in");
ofstream cout("deque.out");
int K, N;
cin>>N>>K;
vector <int> a(N);
vector<pair<int, int> >q;
for (int i = 0; i < N; i++) {
cin>>a[i];
}
int r = 0;
for (int i = 0; i < K; i++) {
while (q.size() > r && q[q.size()-1].first >= a[i]) {
q.erase(q.end()-1);
}
q.push_back(make_pair(a[i], i));
}
long long sum = q[r].first;
for (int i = K; i < N; i++) {
//push in queue
while (q.size() > r && q[q.size()-1].first >= a[i]) {
q.erase(q.end()-1);
}
q.push_back(make_pair(a[i], i));
//remove if not in current index
while (q[r].second<i-K+1) {
r++;
}
sum+=q[r].first;
}
cout<<sum;
}