Pagini recente » Cod sursa (job #1125480) | Cod sursa (job #1154979) | Cod sursa (job #2252949) | Cod sursa (job #771948) | Cod sursa (job #779751)
Cod sursa(job #779751)
#include <cstdio>
const unsigned int MAX_LENGTH(5000000);
signed 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);
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;
}
std::fclose(stdin);
std::printf("%lld\n",sum);
std::fclose(stdout);
return 0;
}