Submission #1303443

#TimeUsernameProblemLanguageResultExecution timeMemory
1303443_asunaaColors (BOI20_colors)C++20
22 / 100
1 ms428 KiB
#include <bits/stdc++.h>
using namespace std;
long long i, j, l, r, mid, p, q, k, t, n, m, a, b, c, d, ans, cnt, res;
const long long mod = 999993143, mod2 = 999993469;
string s;
bool check;
long double cur;
map <long long, long long> mp;
int main(){
	ios_base::sync_with_stdio(false);
	cin.tie(0);
	cout.tie(0);
	cin >> n;
	if (n > 64){
		l = 1;
		r = n;
		a = 1;
		b = n;
		res = n / 3;
		mp[res] = 1;
		cout << "? " << res << endl;
		cin >> d;
		cnt = 0;
		t = res;
		while (l < r){
			mid = (l + r) / 2;
			if (cnt % 2 == 0){
				res += mid;
			}
			else{
				res -= mid;
			}
			if (mp[res] == 1 || res <= 0 || res > n){
				res += 1;
				if (mp[res] == 1 || res <= 0 || res > n){
					res -= 2;
					if (mp[res] == 1 || res <= 0 || res > n){
						res += 3;
						if (mp[res] == 1 || res <= 0 || res > n){
							res -= 4;
							if (mp[res] == 1 || res <= 0 || res > n){
								res += 5;
								if (mp[res] == 1 || res <= 0 || res > n){
									res -= 6;
									if (mp[res] == 1 || res <= 0 || res > n){
										break;
									}
								}
							}
						}
					}
				}
			}
			mp[res] = 1;
			cout << "? " << res << endl;
			cin >> d;
			if (d == 0){
				a = max(a, abs(t - res) + 1);
				l = a;
			}
			else{
				b = min(b, abs(t - res));
				r = b;
			}
			c = a;
			d = b;
			a = min(c, d);
			b = max(c, d);
			cnt += 1;
			t = res;
		}
		cout << "= " << a << endl;
	}
	else{
		ans = 0;
		l = 2;
		r = n;
		cout << "? 1" << endl;
		cin >> d;
		for (i = 2; i <= n; i += 1){
			if (i % 2 == 1){
				cout << "? " << l << endl;
				l += 1;
			}
			else{
				cout << "? " << r << endl;
				r -= 1;
			}
			cin >> d;
			if (d == 0){
				break;
			}
			else{
				ans += 1;
			}
		}
		cout << "= " << n - ans << endl;
	}
}
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...