Pagini recente » Cod sursa (job #1206031) | Cod sursa (job #2236814) | Cod sursa (job #176247) | Cod sursa (job #1292225) | Cod sursa (job #779747)
Cod sursa(job #779747)
#include <cstdio>
const unsigned int MAX_LENGTH(5000000);
unsigned int numbers [MAX_LENGTH];
unsigned int deque [MAX_LENGTH];
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);
unsigned int number, *number_ptr(&number);
signed int front(0), back(-1); // empty deque
unsigned int iterator(0);
do
{
std::scanf("%u",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("%u",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;
}
std::fclose(stdin);
std::printf("%lld\n",sum);
std::fclose(stdout);
return 0;
}