Pagini recente » Cod sursa (job #2069234) | Cod sursa (job #771250) | Cod sursa (job #1729446) | Cod sursa (job #1005137) | Cod sursa (job #1538867)
#include <iostream>
#include <fstream>
#include <string.h>
//#include <vector>
//#include <queue>
//#include <algorithm>
using namespace std;
const int nmax = 5000005;
int n, k, V[nmax], deq[nmax];
int main(){
freopen("deque.in", "r", stdin);
freopen("deque.out", "w", stdout);
scanf("%d %d ", &n, &k);
for (int i = 0; i < n; i++)
scanf("%d", &V[i]);
long long sum = 0;
int front = 1, back = 0; // vertical queue || Back < Front => deq-ul este vid
for (int i = 0; i < n; i++){
while (front <= back && V[i] <= V[deq[back]])
back--;
deq[++back] = i;
if (deq[front] == i - k)
front++;
if (i >= k-1)
sum += V[deq[front]];
}
printf("%lld ", sum);
fclose(stdin);
fclose(stdout);
return 0;
}