Cod sursa(job #567942)

Utilizator vladtarniceruVlad Tarniceru vladtarniceru Data 30 martie 2011 17:22:12
Problema Deque Scor 25
Compilator cpp Status done
Runda Arhiva educationala Marime 0.68 kb
# include <fstream>
using namespace std;
std :: ifstream f ("deque.in");
std :: ofstream g ("deque.out");
int n, k, i, sol, st = 1, dr, v[5000010], deq[5000010];
inline int bs (int st, int dr, int find){
	int 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 main (){
	f >> n >> k;
	for (i = 1; i <= n; ++i){
		f >> v[i];
		//for (; sint <= 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;
}