제출 #1331426

#제출 시각아이디문제언어결과실행 시간메모리
1331426settopLight Bulbs (EGOI24_lightbulbs)C++20
60.67 / 100
179 ms460 KiB
#include<bits/stdc++.h>

using namespace std;

#include<ext/pb_ds/assoc_container.hpp>
#include<ext/pb_ds/tree_policy.hpp>
using namespace __gnu_pbds;

#define int long long
#define ordered_set tree<int,null_type,less<int>,rb_tree_tag,tree_order_statistics_node_update>
#define fall(i,a,b) for(int i=a;i<=b;i++)
#define rfall(i,a,b) for(int i=a;i>=b;i--)
#define pb push_back
#define sz(x) (int)x.size()
const int MAXN=1e2+10;
typedef pair<int,int> pii;

int n,ind[MAXN];

int32_t main(){
    std::ios_base::sync_with_stdio(false);
    cin.tie(NULL);

    cin>>n;

    fall(i,1,n){ //vou pela coluna procurar uma deitada
        int ini=1,fim=n,pos=-1;
        while(ini<=fim){
            int mei=(ini+fim)/2;
            if(mei==1){
                cout<<"? "<<endl;
                fall(j,1,n){
                    fall(k,1,n){
                        if(k!=i || j>2) cout<<"0";
                        else cout<<"1";
                    }
                    cout<<endl;
                }
                int a; cin>>a;
                if(a==n){
                    pos=1;
                    break;
                }
                if(a==2*n){
                    ini=3;
                    continue;
                }
                cout<<"? "<<endl;
                fall(j,1,n){
                    fall(k,1,n){
                        if(k!=i || (j!=1 && j!=3)) cout<<"0";
                        else cout<<"1";
                    }
                    cout<<endl;
                }
                int b; cin>>b;
                if(b==n){
                    pos=1;
                    break;
                }
                if(b==2*n){
                    pos=2;
                    break;
                }
                cout<<"?"<<endl;
                fall(j,1,n){
                    fall(k,1,n){
                        if(k!=i || (j!=2 && j!=3)) cout<<"0";
                        else cout<<"1";
                    }
                    cout<<endl;
                }
                int c; cin>>c;
                if(c==n){
                    pos=2;
                    break;
                }
                pos=1;
                break;
            }
            cout<<"? "<<endl;
            fall(j,1,n){
                fall(k,1,n){
                    if(k!=i || j>mei) cout<<"0";
                    else cout<<"1";
                }
                cout<<endl;
            }
            int x; cin>>x;
            if(x!=mei*n) pos=mei,fim=mei-1;
            else ini=mei+1;
        }
        if(pos==-1){
            cout<<"!"<<endl;
            fall(j,1,n)
                fall(k,1,n){
                    if(k!=i) cout<<"0";
                    else cout<<"1";
                    if(k==n) cout<<endl;
                }
            return 0;
        }
        ind[i]=pos;
    }
    cout<<"!"<<endl;
    fall(i,1,n)
        fall(j,1,n){
            if(ind[j]==i) cout<<"1";
            else cout<<"0";
            if(j==n) cout<<endl;
        }
}
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...