Cod sursa(job #332189)

Utilizator szabotamasSzabo Tamas szabotamas Data 16 iulie 2009 22:45:04
Problema Deque Scor 100
Compilator cpp Status done
Runda Arhiva educationala Marime 0.55 kb
#include <iostream>

long v[5000001],dq[5000001],i,n,k,beg,end;
long long sum;

using namespace std;

int main(){
	freopen ("deque.in", "r", stdin);
		scanf("%ld %ld", &n, &k);
		for (i=1; i<=n; i++){
			scanf("%ld" , &v[i]);
		}
	fclose(stdin);
		beg=1;
		end=0;
		for (i=1; i<=n; i++){
			while (beg<=end && v[dq[end]]>=v[i]){
				--end;
			}
			end++;
			dq[end]=i;
			if (dq[beg]==i-k) beg++;
			if (i>=k){
				sum+=v[dq[beg]];
			}
		}
	freopen ("deque.out", "w", stdout);
		printf("%lld", sum);
	fclose(stdout);
	return 0;
}