Submission #72625

#TimeUsernameProblemLanguageResultExecution timeMemory
72625mhndThe Big Prize (IOI17_prize)C++14
0 / 100
127 ms10432 KiB
#include "prize.h"
#include <bits/stdc++.h>

using namespace std;

typedef long long ll;
typedef unsigned long long ull;
const int N = 2e5+50;
const int oo = 1e9;
const int mod = 1e9+7;

int dsu[N];
vector<int> a;

int find(int u){
	return u==dsu[u]?u:dsu[u] = find(dsu[u]);
}

int find_best(int n){
	int cur = 0;
	set<int> st;
	for(int i=0;i<n;i++){
		dsu[i]=i;
		st.insert(i);
	}
	for(int i=0;i<5000;i++){
		a = ask(cur);
		if(!a[0] && !a[1])return cur;
		if(a[0] > a[1]){
			int md = cur/2;
			md = find(md);
			st.erase(md);
			auto it = st.lower_bound(md);
			if(it != st.begin())it--;
			dsu[md] = *it;
			cur = md;
		}else{
			int md = (n+cur-1)/2;
			md = find(md);
			st.erase(md);
			auto it = st.lower_bound(md);
			if(it != st.begin())it--;
			dsu[md] = *it;
			cur = md;
		}
	}
	return 0;
}
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...