Pagini recente » Cod sursa (job #331065) | Cod sursa (job #3226885) | Cod sursa (job #1979053) | Cod sursa (job #610928) | Cod sursa (job #2888880)
#include <fstream>
#include <vector>
#include <climits>
#include <iostream>
using namespace std;
ifstream fin("deque.in");
ofstream fout("deque.out");
long long minim(vector<int> v, int ii){
int sz = v.size();
long long min = LLONG_MAX;
for(; ii < sz; ++ii){
if(v[ii] < min)
min = v[ii];
}
return min;
}
int main() {
int n, k, i, ii, j, num;
vector<int> v;
vector<int> init;
long long sum;
fin >> n >> k;
for(i = 0; i < n; ++i) {
fin >> num;
init.push_back(num);
}
for (i = 0, ii = 0; i < k; ++i) {
num = init[i];
if (v.size() == 0) {
v.push_back(num);
} else {
while (v.back() > num)
v.pop_back();
v.push_back(num);
}
}
sum = minim(v, ii);
for (++ii; i < n; ++i) {
if(init[i - k] == v[ii])
++ii;
num = init[i];
if(ii == v.size()){
v.push_back(num);
} else {
while(v.back() > num && v.size() > ii){
v.pop_back();
}
v.push_back(num);
}
sum += minim(v, ii);
}
fout << sum;
return 0;
}