Cod sursa(job #2625735)

Utilizator antonioganea3Antonio Ganea antonioganea3 Data 6 iunie 2020 09:51:49
Problema Deque Scor 100
Compilator cpp-64 Status done
Runda Arhiva educationala Marime 0.62 kb
#include <iostream>
using namespace std;

FILE * fin, * fout;

int v[5000003];
int Dequeue[5000003];
int fr = 1;
int bk = 0;

int main (){
    fin = fopen("deque.in","r");
    fout = fopen("deque.out","w");

    int N, K;
    fscanf(fin,"%d%d\n",&N,&K);

	for ( int i = 1; i <= N; i++)
		fscanf(fin,"%d", v+i);

    long long int sum = 0;
    for ( int i = 1; i <= N; i++ ){
		while (fr <= bk && v[i] <= v[ Dequeue[bk] ]) bk--;
		Dequeue[++bk] = i;
		if (Dequeue[fr] == i-K) fr++;
		if (i >= K) sum += v[ Dequeue[fr]];
    }
    fprintf(fout,"%lld",sum);

    fclose(fin);
    fclose(fout);
    return 0;
}