제출 #1341108

#제출 시각아이디문제언어결과실행 시간메모리
1341108aykhnDark Ride (EGOI25_darkride)C++20
100 / 100
2 ms664 KiB
#include <bits/stdc++.h>

using namespace std;

int n;

int ask(vector<int> q)
{
  string s(n, '0');
  for (int &i : q) s[i] = '1';
  cout << "? " << s << endl;
  int ret;
  cin >> ret;
  return (ret & 1);
}
void answer(int x, int y)
{
  cout << "! " << x << ' ' << y << endl;
  exit(0);
}

signed main()
{
  ios_base::sync_with_stdio(0);
  cin.tie(0);
  cin >> n;
  int x = 0, xo = 0;
  for (int i = 0; i < 15; i++)
  {
    vector<int> q;
    for (int j = 0; j < n; j++)
    {
      if (j >> i & 1) q.push_back(j);
    }
    if (ask(q)) 
    {
      if (!xo)
      {
        int l = 0, r = (int)q.size() - 1;
        while (l < r)
        {
          int mid = (l + r) >> 1;
          vector<int> v;
          for (int i = 0; i <= mid; i++) v.push_back(q[i]);
          if (ask(v)) r = mid;
          else l = mid + 1;
        }
        x = q[l];
      }
      xo |= (1 << i);
    }
  }
  answer(x, xo ^ x);
}
#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...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...