Pagini recente » Cod sursa (job #3145556) | Cod sursa (job #987666) | Cod sursa (job #2879837) | Cod sursa (job #2712930) | Cod sursa (job #1784396)
#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;
}