Pagini recente » Cod sursa (job #970988) | Cod sursa (job #972248) | Cod sursa (job #974453) | Cod sursa (job #972238) | Cod sursa (job #971432)
Cod sursa(job #971432)
#include <stdio.h>
#include <math.h>
#include <iostream>
#include <string.h>
#include <stdlib.h>
using namespace std;
#define NMax 50000
int A[NMax], Deque[NMax];
int Front, Back;
int main()
{
int N, K;
//int A[NMax+1];
FILE *f = fopen("deque.in", "r");
FILE *g = fopen("deque.out", "w");
fscanf(f, "%d %d", &N, &K);
for (int i=1; i<=N; i++)
fscanf(f, "%d", &A[i]);
long long int s = 0;
Front = 1, Back = 0;
for (int i = 1; i <= N; i++)
{
while (Front <= Back && A[i] <= A[Deque[Back]])
Back--;
Deque[++Back] = i;
if (Deque[Front] == i-K)
Front++;
if (i >= K) s += A[ Deque[Front]];
}
fprintf(g, "%lld", s);
fclose(f);
fclose(g);
return 0;
}