제출 #1342166

#제출 시각아이디문제언어결과실행 시간메모리
1342166gry3125Dark Ride (EGOI25_darkride)C++20
100 / 100
14 ms544 KiB
#include <bits/stdc++.h>
#define ll long long int
#define pb push_back
#define fi first
#define se second
#define all(v) (v).begin(),(v).end()
using namespace std;

int main() {
    int n; cin >> n;
    vector<int> res(15);
    for (int i = 0; i < 15; i++) {
        cout << "? ";
        for (int j = 0; j < n; j++) {
            if ((1LL << i) & j) cout << "1";
            else cout << "0";
        }
        cout << endl;
        cin >> res[i];
        res[i] %= 2;
    }
    int fi = -1;
    for (int i = 0; i < 15; i++) {
        if (res[i]) fi = i;
    }
    vector<int> a;
    for (int i = 0; i < n; i++) {
        if ((1LL << fi) & i) a.pb(i);
    }
    int L = 0, R = a.size()-1;
    while (L < R) {
        int m = (L + R) / 2;
        vector<char> c(n, '0');
        for (int i = L; i <= m; i++) {
            c[a[i]] = '1';
        }
        cout << "? "; for (auto x : c) cout << x; cout << endl;
        int sc; cin >> sc; sc %= 2;
        if (sc) R = m;
        else L = m+1;
    }
    int ST = a[L]; int EN = ST;
    for (int i = 0; i < 15; i++) {
        if (res[i]) {
            EN ^= (1LL << i);
        }
    }
    cout << "! " << ST << " " << EN << endl;
    return 0;
}
#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...