Cod sursa(job #1604219)

Utilizator TeodorCotetCotet Teodor TeodorCotet Data 18 februarie 2016 02:31:56
Problema Deque Scor 100
Compilator cpp Status done
Runda Arhiva educationala Marime 0.68 kb
#include <bits/stdc++.h>

using namespace std;

ifstream fin("deque.in");
ofstream fout("deque.out");

const int NMAX = 5000000;

int n; int k;

long long v[NMAX + 1];

long long sol;

deque<int> q;

int main() {

	fin >> n >> k;

	for(int i = 1; i <= k ; ++i) {
		
		fin >> v[i];

		while(q.empty() == false && v[i] < v[q.back()])
			q.pop_back();
		
		q.push_back(i);
	}

	
	sol += v[q.front()];

	for(int i = k + 1; i <= n; ++i) {
		
		fin >> v[i];

		if(q.front() == i - k)
			q.pop_front();

		while(q.empty() == false && v[i] < v[q.back()])
			q.pop_back();

		q.push_back(i);

		sol += v[q.front()];
	
	}

	fout << sol << '\n';

	return 0;
}