제출 #1328203

#제출 시각아이디문제언어결과실행 시간메모리
1328203SmuggingSpunColors (BOI20_colors)C++20
9 / 100
1 ms440 KiB
#include<bits/stdc++.h>
using namespace std;
typedef long long ll;
map<ll, bool>vis;
bool ask(ll x){
	cout << "? " << x << endl;
	vis[x] = true;
	int k;
	cin >> k;
	return k == 1;
}
ll n;
namespace sub1{
	void solve(){
		ask(1);
		for(int i = n, cur = 1; i > 1; i--){
			if((n ^ i ^ 1) & 1){
				if(!ask(cur += i - 1)){
					return void(cout << "= " << i); 
				}
			}
			else if(!ask(cur -= i - 1)){
				return void(cout << "= " << i);
			}
		}
		cout << "= 1";
	}
}
namespace sub2{
  void solve(){
    ask(1);
    if(ask((n + 1) >> 1)){
      for(int p = (n + 1) >> 1, d = n - p, z = 1; d > 1; d--, z ^= 1){
        if(z){
          if(!ask(p += d)){
            return void(cout << "= " << d);
          }
        }
        else if(!ask(p -= d)){
          return void(cout << "= " << d);
        }
      }
      return void(cout << "= 1");
    }
    int low_bound = (n + 1) >> 1;
    ask(2);
    for(int p = 2, d = n - 2, z = 1; d > low_bound; d--, z ^= 1){
      if(z){
        if(!ask(p += d)){
          return void(cout << "= " << d);
        }
      }
      else if(!ask(p -= d)){
        return void(cout << "= " << d);
      }
    }
    cout << "= " << low_bound;
  }
}
namespace sub345{
  void solve(){

  }
}
int main(){
	ios_base::sync_with_stdio(0); cin.tie(0); cout.tie(0);
	cin >> n;
	if(n <= 64){
		sub1::solve();
	}
	else if(n <= 125){
		sub2::solve();
	}
  else{
    sub345::solve();
  }
}
#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...