Submission #1224573

#TimeUsernameProblemLanguageResultExecution timeMemory
1224573asli_bgLight Bulbs (EGOI24_lightbulbs)C++20
0 / 100
0 ms436 KiB
#include <bits/stdc++.h>
using namespace std;

#define fi first
#define se second
#define pb push_back
#define sp <<' '<<

#define FOR(i,a) for(int i=0;i<(a);i++)
#define FORE(i,a,b) for(int i=(a);i<(b);i++)

#define cont(x) for(auto el:x) cout<<el<<endl;
#define contp(x) for(auto el:x) cout<<el.fi<<'-'<<el.se<<' ';cout<<endl;
#define DEBUG(x) cout<<#x sp x<<endl;

#define mid (l+r)/2

typedef vector<int> vi;
typedef pair<int,int> pii;
typedef vector<pii> vii;
typedef vector<bool> vb;


signed main(){
    ios_base::sync_with_stdio(false);
    cin.tie(0);cout.tie(0);

    int n;
    cin>>n;
    vector<string> grid(n);
    vector<string> cev(n);

    FOR(i,n){
        FOR(j,n){
            grid[i]+='0';
            cev[i]+='0';
        }
    }

    int ans;

    FOR(i,n){
        int tut;
        FOR(j,n) grid[i][j]='1';

        cont(grid);
        cin>>tut;

        if(tut==n*n){
            FOR(j,n){
                FOR(k,n){
                    if(j==i) cev[j][k]='1';
                    else cev[j][k]='0';
                }
            }
            break;
        }

        FOR(j,n) grid[i][j]='0';

        int l=0;
        int r=n-1;
        while(l+1<r){
            bool f=true;

            FORE(j,l,mid+1){
                grid[i][j]='1';
            }

            cout<<'?'<<endl;
            cont(grid);

            cin>>ans;

            if(ans==(mid-l+1)*n) f=false;

            FORE(j,l,mid+1){
                grid[i][j]='0';
            }

            if(f){
                r=mid;
            }
            else{
                l=mid+1;
            }
        }

        int ind=-1;

        //cout<<"here" sp l sp r<<endl;

        if(l>=0){
            FOR(j,n) if(j!=l) grid[i][j]='1';
            cont(grid);
            cin>>ans;

            if(ans!=tut-(n-1)) ind=l;
            
            FOR(j,n) grid[i][j]='0';
        }

        if(r<n){
            FOR(j,n) if(j!=r) grid[i][j]='1';
            cont(grid);
            cin>>ans;

            if(ans!=tut-(n-1)) ind=r;
            
            FOR(j,n) grid[i][j]='0';
        }

        //DEBUG(ind);

        cev[i][ind]='1';
    }

    cout<<"!"<<endl;
    cont(cev);
}
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...