Pagini recente » Cod sursa (job #3175450) | Cod sursa (job #634164) | Cod sursa (job #2159789) | Cod sursa (job #2827000) | Cod sursa (job #779762)
Cod sursa(job #779762)
#include <cstdio>
int main (void)
{
std::freopen("deque.in","r",stdin);
std::freopen("deque.out","w",stdout);
unsigned int n,k;
std::scanf("%u%u",&n,&k);
signed int *numbers(new signed int [n]);
unsigned int *deque(new unsigned int [n]);
signed int number, *number_ptr(&number);
signed int front(0), back(-1); // empty deque
unsigned int iterator(0);
do
{
std::scanf("%d",number_ptr);
numbers[iterator] = number;
while (front <= back && number <= numbers[deque[back]])
--back;
++back;
deque[back] = iterator;
++iterator;
}
while (iterator < k);
signed long long sum(numbers[deque[front]]);
while (iterator < n)
{
std::scanf("%d",number_ptr);
numbers[iterator] = number;
while (front <= back && number <= numbers[deque[back]])
--back;
++back;
deque[back] = iterator;
if (deque[front] == iterator - k)
++front;
sum += numbers[deque[front]];
++iterator;
}
/*
delete [ ] numbers;
delete [ ] deque;
*/
std::fclose(stdin);
std::printf("%lld\n",sum);
std::fclose(stdout);
return 0;
}