Pagini recente » Cod sursa (job #2143624) | Monitorul de evaluare | Cod sursa (job #580083) | Cod sursa (job #1941294) | Cod sursa (job #1051456)
//
// main.c
// deque
//
// Created by Alexandru Bâgu on 12/10/13.
// Copyright (c) 2013 Alexandru Bâgu. All rights reserved.
//
#include <stdio.h>
int main(int argc, const char * argv[])
{
const int MAX = 5000000;
freopen("deque.in", "r", stdin);
freopen("deque.out", "w", stdout);
long mins = 0;
int N, K;
scanf("%d %d", &N, &K);
int *STK = malloc(MAX * sizeof(int)),
*DEQ = malloc(MAX * sizeof(int));
int v, i, f = 0, b = 0;
for(i = 0; i < MAX; i++)
STK[i] = DEQ[i] = 0;
for(i = 1; i <= N; i++)
{
scanf("%d ", STK + i);
while (b - f > 0 && STK[i] <= STK[DEQ[b - 1]])
b--;
DEQ[b++] = i;
if(i - K == DEQ[f])
f++;
if(i >= K)
mins += STK[DEQ[f]];
}
printf("%ld", mins);
return 0;
}