Pagini recente » Cod sursa (job #343671) | Cod sursa (job #3179191) | Cod sursa (job #2122652) | Cod sursa (job #2596477) | Cod sursa (job #2159408)
#include <iostream>
#include <fstream>
#include <deque>
using namespace std;
unsigned int n, k;
long long int S;
struct Element {
int value;
int index;
} temp;
deque<Element> myDeque;
ifstream fin("deque.in");
ofstream fout("deque.out");
int main()
{
unsigned int i, j;
fin >> n >> k;
for (i = 1; i <= n; i++) {
fin >> temp.value;
temp.index = i;
if (myDeque.empty()) myDeque.push_back(temp);
else {
if (temp.value < myDeque.front().value) {
myDeque.push_front(temp);
} else {
while (myDeque.back().value > temp.value) {
myDeque.pop_back();
}
myDeque.push_back(temp);
}
}
while (myDeque.front().index + k <= i) myDeque.pop_front();
if (i >= k) /*cout << myDeque.front().value << '\n';*/ S += myDeque.front().value;
}
fout << S;
return 0;
}