Cod sursa(job #567940)

Utilizator vladtarniceruVlad Tarniceru vladtarniceru Data 30 martie 2011 17:19:23
Problema Deque Scor 0
Compilator cpp Status done
Runda Arhiva educationala Marime 0.7 kb
# include <fstream>
using namespace std;
std :: ifstream f ("deque.in");
std :: ofstream g ("deque.out");
template <class T>
	inline T bs (T st, T dr, T find){
		T m, ret = 0;
		while (st <= dr){
			m = (st + dr) >> 1;
			if (v[deq[m]] <= find){
				ret = m;
				st = m + 1;
			} 
			else dr = m - 1;
		}
		return ret;
	}
int n, k, i, sol, st = 1, dr, v[5000010], deq[5000010];
int main (){
	f >> n >> k;
	for (i = 1; i <= n; ++i){
		f >> v[i];
		//for (; st <= dr && v[deq[dr]] >= v[i]; --dr);
		dr = bs (st, dr, v[i]);
		if (!dr) dr = st - 1; 
		deq[++dr] = i;
		if (deq[st] == i - k) ++st;
		if (i - k >= 0)sol = sol + v[deq[st]];
	}
	g << sol << '\n';
	g.close ();
	return 0;
}