Cod sursa(job #567645)

Utilizator vladtarniceruVlad Tarniceru vladtarniceru Data 30 martie 2011 12:08:43
Problema Deque Scor 0
Compilator cpp Status done
Runda Arhiva educationala Marime 0.73 kb
# include <fstream>

using namespace std;

std :: ifstream f ("deque.in");
std :: ofstream g ("deque.out");

template <class T>
	inline T bsearch (T st, T dr, T find){
		T m, ret = st;
		for (; st <= dr; ){
			m = (st + dr) >> 1;
			if (v[deq[m]] <= find){
				st = m + 1;
				ret = m;
			}
			else dr = m - 1;
		}
		return ret;
	}

int n, k, cit, v[5000010], deq[5000010];
int i, st = 1, dr;
int s = 0;

int main (){
	f >> n >> k;
	for (i = 1; i <= n; ++i){
		f >> v[i];
		//for (; st <= dr && v[deq[dr]] >= v[i]; --dr);// bsearch (st, dr, cit);
		dr = bsearch (st, dr, v[i]);
		deq[++dr] = i;
 		if (deq[st] == i - k) ++st;
		if (i >= k) s = s + v[deq[st]];
	}
	g << s << '\n';
	g.close ();
	return 0;
}