Pagini recente » Cod sursa (job #3233711) | Cod sursa (job #3238475) | Cod sursa (job #64058) | Cod sursa (job #3171093) | Cod sursa (job #530297)
Cod sursa(job #530297)
#include <iostream>
#define N 5000001
int a[N];
int deck[N];
int st,dr;
int n,k;
using namespace std;
long long sum;
int main() {
freopen("deque.in","r",stdin);
freopen("deque.out","w",stdout);
scanf("%d %d",&n,&k);
st = 1;
dr = 1;
for(int i = 0; i < n; i++) {
scanf("%d",&a[i]);
}
deck[st] = a[0];
for(int i = 1; i < n; i++) {
if (i >= k) {
if (a[i-k] == deck[st]) st++;
while (a[i] < deck[dr] && dr >= st) {
dr--;
}
deck[++dr] = a[i];
sum += deck[st];
}
else {
while (a[i] < deck[dr] && dr >= st) {
dr--;
}
deck[++dr] = a[i];
if (i == k - 1) sum += deck[st];
}
}
printf("%lld\n",sum);
return 0;
}