Cod sursa(job #2574349)

Utilizator rebecca0312Andrei Rebecca rebecca0312 Data 5 martie 2020 21:42:26
Problema Deque Scor 100
Compilator cpp-64 Status done
Runda Arhiva educationala Marime 0.58 kb
#include<bits/stdc++.h>
using namespace std;

const int NMAX=5000010;
int v[NMAX],Deque[NMAX];

int main(){
	freopen("deque.in", "r", stdin);
	freopen("deque.out", "w", stdout);
	int n,k;
	scanf("%d%d", &n, &k);
	for(int i=1;i<=n;i++)
		scanf("%d", &v[i]);
	int Front=1,Back=0;
	long long sum=0;
	for(int i=1;i<=n;i++){
		while(Front<=Back && v[i]<=v[Deque[Back]])
            Back--;
		Deque[++Back]=i;
		if(Deque[Front]==i-k)
            Front++;
		///minimul se afla in Deque[Front]
		if(i>=k)
            sum+=v[Deque[Front]];
	}
	printf("%lld\n", sum);
	return 0;
}