Pagini recente » Cod sursa (job #1001237) | Cod sursa (job #1081391) | Cod sursa (job #1240514) | Cod sursa (job #402898) | Cod sursa (job #1052669)
//
// main.c
// deque
//
// Created by Alexandru Bâgu on 12/10/13.
// Copyright (c) 2013 Alexandru Bâgu. All rights reserved.
//
#include <stdio.h>
#include <fstream>
using namespace std;
int main(int argc, const char * argv[])
{
const int MAX = 5000000;
freopen("deque.in", "r", stdin);
//freopen("deque.out", "w", stdout);
ofstream fout("deque.out");
long long int mins = 0;
int N, K;
scanf("%d %d", &N, &K);
int *STK = new int[MAX],
*DEQ =new int[MAX];
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]];
}
fout<<mins;
//printf("%ld", mins);
return 0;
}