Pagini recente » Cod sursa (job #265700) | Cod sursa (job #897544) | Cod sursa (job #1244939) | Cod sursa (job #1729066) | Cod sursa (job #2891364)
#include <fstream>
#include <deque>
#include <climits>
#define MARK 10000001
using namespace std;
ifstream fin("deque.in");
ofstream fout("deque.out");
int v[5000010];
int main() {
int n, k;
long long sum = 0;
fin >> n >> k;
for (int i = 0; i < n; ++i) {
fin >> v[i];
}
for (int i = 0; i < n - k + 1; ++i) {
int min = MARK;
for (int j = 0; j < k; ++j) {
if (v[i + j] < min) {
min = v[i + j];
}
}
if (min != MARK) {
sum += min;
}
}
fout << sum << "\n";
return 0;
}
/*
#include <fstream>
#include <deque>
#include <climits>
#define MARK 10000001
using namespace std;
ifstream fin("deque.in");
ofstream fout("deque.out");
int main() {
deque<int> d;
int n, k, currentValue, min = INT_MAX, pos = 0;
long long sum = 0;
fin >> n >> k;
for (int i = 0; i < n; ++i) {
fin >> currentValue;
d.push_back(currentValue);
}
// don't forget about the case where there aren't enough k numbers
while (d[pos] != MARK && d[k - 1] != MARK) {
if (d[pos] < min) {
min = d[pos];
}
if (pos == k - 1) {
d.push_back(MARK);
d.push_back(min);
d.pop_front();
min = INT_MAX;
pos = -1;
}
++pos;
}
while (d.front() != MARK) {
d.pop_front();
}
for (int i = 0; i < d.size(); ++i) {
if (d[i] != MARK) {
sum += d[i];
}
}
fout << sum;
return 0;
}
*/