Cod sursa(job #971978)

Utilizator Sanduleac_VladSanduleac Vllad Alexandru Sanduleac_Vlad Data 10 iulie 2013 18:13:28
Problema Deque Scor 100
Compilator cpp Status done
Runda Arhiva educationala Marime 0.8 kb
#include <cstdio>
#include <deque>
using namespace std;

long N, K;
long long sum;
deque<long> minn;
deque<long> poz;

int main() {
	long i, j;
	long x;
	freopen("deque.in", "r", stdin);
	freopen("deque.out", "w", stdout);
	scanf("%ld %ld", &N, &K);
	for(i = 1; i <= K; i++) {
		scanf("%ld", &x);
		while(!minn.empty() && x < minn.back()) {
			poz.pop_back();
			minn.pop_back();
		}
		minn.push_back(x);
		poz.push_back(i);
	}
	sum = minn.front();
	for(i = K + 1; i <= N; i++) {
		scanf("%ld", &x);
		while(!minn.empty() && x < minn.back()) {
			minn.pop_back();
			poz.pop_back();
		}
		if(!minn.empty() && poz.front() == i - K) {
			poz.pop_front();
			minn.pop_front();
		}
		minn.push_back(x);
		poz.push_back(i);
		sum += minn.front();
	}
	printf("%lld", sum);
	return 0;
}