Pagini recente » Cod sursa (job #686652) | Cod sursa (job #884780) | Cod sursa (job #961662) | Cod sursa (job #1985573) | Cod sursa (job #779732)
Cod sursa(job #779732)
#include <fstream>
#include <queue>
#include <vector>
int main (void)
{
unsigned int n,k;
std::ifstream input("deque.in");
input >> n >> k;
std::vector<signed int> numbers(n);
std::deque<unsigned int> deque;
signed int number;
unsigned int iterator(0);
do
{
input >> number;
numbers[iterator] = number;
while (!deque.empty() && number <= numbers[deque.back()])
deque.pop_back();
deque.push_back(iterator);
++iterator;
}
while (iterator < k);
signed long long sum(numbers[deque.front()]);
deque.pop_front();
while (iterator < n)
{
input >> number;
numbers[iterator] = number;
while (!deque.empty() && number <= numbers[deque.back()])
deque.pop_back();
deque.push_back(iterator);
if (deque.front() == iterator - k)
deque.pop_front();
sum += numbers[deque.front()];
++iterator;
}
input.close();
std::ofstream output("dequeue.out");
output << sum << '\n';
output.close();
return 0;
}