Pagini recente » Cod sursa (job #1946710) | Cod sursa (job #3038163) | Cod sursa (job #310676) | Cod sursa (job #1810453) | Cod sursa (job #818996)
Cod sursa(job #818996)
#include <fstream>
int main()
{
ifstream read ("deque.in", ifstream::in);
ofstream out ("deque.out", ofstream::out);
int N, K, start_deq, end_deq;
int* Array;
int* Deque;
long long sum = 0;
read >> N >> K;
Array = new int[N];
Deque = new deq_elem[N];
start_deq = 0, end_deq = -1;
for (int i = 0; i < N; i++)
read >> Array[i];
for (int i = 0; i < N; i++) {
/* verify if top of deque is outside the range */
if (start_deq <= end_deq && Deque[start_deq] <= i - K)
start_deq++;
/* insert current element into deque */
while (end_deq >= start_deq && Array[Deque[end_deq]] > Array[i])
end_deq--;
Deque[++end_deq] = i;
if (i + 1 >= K)
sum += Array[Deque[start_deq]];
}
write << sum << endl;
return 0;
}