제출 #1362394

#제출 시각아이디문제언어결과실행 시간메모리
1362394biserailievaDark Ride (EGOI25_darkride)C++20
16 / 100
0 ms528 KiB
#include <bits/stdc++.h>
using namespace std;

int main()
{
    ios::sync_with_stdio(false);
    cin.tie(nullptr);
    int n;
    cin>>n;
    if(n==3)
    {
        cout << "? 100" << endl;
        int x0; cin >> x0;
        cout << "? 010" << endl;
        int x1; cin >> x1;
        cout << "? 001" << endl;
        int x2; cin >> x2;
        int middle;
        if (x0 != x1 && x0 != x2) middle = 0;
        else if (x1 != x0 && x1 != x2) middle = 1;
        else middle = 2;
        int A = -1, B = -1;
        for (int i = 0; i < 3; i++) {
            if (i != middle) {
                if (A == -1) A = i;
                else B = i;
            }
        }
        cout << "! " << A << " " << B << endl;
    }
    string s="1"; 
    for(int i=1;i<n;i++)
    {
        s+="0";
    }
    cout<<"? "<<s<<endl;
    int x;
    cin>>x;
    int l=1, r=n-1;
    if(x==1)
    {
        while(l<r)
        {
            int mid=(l+r)/2;
            s=string(n, '0');
            s[0]='1';
            for(int i=l;i<=mid;i++)
            {
                s[i]='1';
            }
            cout<<"? "<<s<<endl;
            cin>>x;
            if(x%2==0)
            {
                r=mid;
            }
            else
            {
                l=mid+1;
            }
        }
        cout<<"! "<<0<<" "<<l<<endl;
    }
    else
    {
        l=0;
        r=n/2-1;
        while(l<r)
        {
            int mid=(l+r)/2;
            s=string(n, '0');
            for(int i=l;i<=mid;i++)
            {
                s[i]='1';
            }
            cout<<"? "<<s<<endl;
            cin>>x;
            if(x%2==1)
            {
                r=mid;
            }
            else
            {
                l=mid+1;
            }
        }
        int A=l;
        l=n/2;
        r=n-1;
        while(l<r)
        {
            int mid=(l+r)/2;
            s=string(n, '0');
            for(int i=l;i<=mid;i++)
            {
                s[i]='1';
            }
            cout<<"? "<<s<<endl;
            cin>>x;
            if(x%2==1)
            {
                r=mid;
            }
            else
            {
                l=mid+1;
            }
        }
        int B=l;
        cout<<"! "<<A<<" "<<B<<endl;
    }
    return 0;
}
#결과 실행 시간메모리채점기 출력
결과를 불러오는 중입니다…
#결과 실행 시간메모리채점기 출력
결과를 불러오는 중입니다…
#결과 실행 시간메모리채점기 출력
결과를 불러오는 중입니다…
#결과 실행 시간메모리채점기 출력
결과를 불러오는 중입니다…
#결과 실행 시간메모리채점기 출력
결과를 불러오는 중입니다…
#결과 실행 시간메모리채점기 출력
결과를 불러오는 중입니다…
#결과 실행 시간메모리채점기 출력
결과를 불러오는 중입니다…