제출 #1361744

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

using namespace std;

using ll = long long;

vector<char> s;
pair<int, int> ans={-1,-1};
int n;

int uPrvoj(int l, int r){
    if(l==r){
        return l;
    }
    int pl=l, pr=((r+l-1)%2==0) ? (r+l-1)/2 : (r+l)/2;

    for(int i=pl;i<=pr;i++){
        s[i]='1';
    }

    cout<<"?";

    for(int i=0;i<n;i++){
        cout<<s[i];
    }
    cout<<endl;

    int k;
    cin>>k;

    for(int i=pl;i<=pr;i++){
        s[i]='0';
    }

    if(k%2==0)
        return uPrvoj(pr+1, r);

    return uPrvoj(pl, pr);
}

int main(){
    cin>>n;
    s.resize(n);
    for(int i=0;i<n;i++){
        s[i]='0';
    }

    if(n<=30){
    for(int i=0;i<n;i++){
        s[i]='1';
        cout<<"?";
        for(int j=0;j<n;j++)
            cout<<s[j];

        int k;
        cout<<endl;
        cin>>k;
        if(k==1){
            if(ans.first==-1)
                ans.first=i;
            else
                ans.second=i;
        }
        s[i]='0';

        if(ans.first!=-1 && ans.second!=-1){
            cout<<"!"<<ans.first<<" "<<ans.second<<endl;
            return 0;
        }
    }
    }

    else{
        ans.first=uPrvoj(0,(n-1)/2);

        ans.second=uPrvoj((n-1)/2+1, n-1);

        cout<<"!"<<ans.first<<" "<<ans.second<<endl;
    }

    return 0;
}
#결과 실행 시간메모리채점기 출력
결과를 불러오는 중입니다…
#결과 실행 시간메모리채점기 출력
결과를 불러오는 중입니다…
#결과 실행 시간메모리채점기 출력
결과를 불러오는 중입니다…
#결과 실행 시간메모리채점기 출력
결과를 불러오는 중입니다…
#결과 실행 시간메모리채점기 출력
결과를 불러오는 중입니다…
#결과 실행 시간메모리채점기 출력
결과를 불러오는 중입니다…
#결과 실행 시간메모리채점기 출력
결과를 불러오는 중입니다…