Cod sursa(job #971432)

Utilizator miu_mik93FMI - Paduraru Miruna miu_mik93 Data 9 iulie 2013 11:49:05
Problema Deque Scor 20
Compilator cpp Status done
Runda Arhiva educationala Marime 0.74 kb
#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;
}