Pagini recente » Cod sursa (job #422346) | Cod sursa (job #1075799) | Cod sursa (job #794092) | Cod sursa (job #570760) | Cod sursa (job #2775815)
#include <fstream>
#include <list>
using namespace std;
long deque(const int *v, const int n, const int k) {
long sum = 0L;
list<int> deq;
int i;
for (i = 0; i < k; i++) {
while (!deq.empty() && v[deq.back()] >= v[i])
deq.pop_back();
deq.push_back(i);
}
sum += v[deq.front()];
if (deq.front() == 0)
deq.pop_front();
while (i < n) {
while (!deq.empty() && v[deq.back()] >= v[i])
deq.pop_back();
deq.push_back(i);
sum += v[deq.front()];
if (deq.front() == i - k + 1)
deq.pop_front();
i++;
}
return sum;
}
int main(void) {
ifstream in("deque.in");
ofstream out("deque.out");
int n, k;
in >> n >> k;
int *v = new int[n];
for (int i = 0; i < n; i++)
in >> v[i];
out << deque(v, n, k);
delete[] v;
in.close();
out.close();
return 0;
}