Submission #1356749

#TimeUsernameProblemLanguageResultExecution timeMemory
1356749yyc000123Light Bulbs (EGOI24_lightbulbs)C++20
22 / 100
495 ms500 KiB
#include<bits/stdc++.h>
using namespace std ;
const int N = 105 ;
int n , arr[N][N] , ans[N][N] ;

int q(){
    cout << "?" << endl ;
    for(int i=1 ; i<=n ; i++){
        for(int j=1 ; j<=n ; j++) cout << arr[i][j] , arr[i][j]=0 ;
        cout << endl ;
    }
    int k ; cin >> k ;
    return k ;
}

void solve(){
    int pos = 1 , k ;
    for(int i=1 ; i<=n ; i++){
        for(int j=1 ; j<=n ; j++) arr[i][j]=1 ;
        if(q()==n*n){
            for(int j=1 ; j<=n ; j++) ans[i][j]=1 ;
            return ;
        }
    }
    for(int i=2 ; i<=n ; i++){
        arr[1][pos]=arr[1][i]=1 ;
        k = q() ;
        if(k==2*n) pos++ ;
        else if(k==n) break ;
        else{
            if(pos>1) pos=i ;
            else{
                arr[1][1]=arr[1][3]=1 ;
                k = q() ;
                if(k==2*n) pos=2 ;
                else if(k==2*n-1){
                    arr[1][2]=arr[1][3]=1 ;
                    k = q() ;
                    if(k==n) pos=2 ;
                }
            }
            break ;
        }
    }
    ans[1][pos]=1 ;
    for(int i=2 ; i<=n ; i++){
        for(int j=1 ; j<=n ; j++){
            arr[1][pos]=arr[i][j]=1 ;
            k = q() ;
            if(k==2*n){
                ans[i][j]=1 ;
                break ;
            }
        }
    }
}

int main(){
    cin >> n ;
    solve() ;
    cout << "!" << endl ;
    for(int i=1 ; i<=n ; i++){
        for(int j=1 ; j<=n ; j++) cout << ans[i][j] ;
        cout << endl ;
    }
    return 0 ;
}
#Result Execution timeMemoryGrader output
Fetching results...
#Result Execution timeMemoryGrader output
Fetching results...
#Result Execution timeMemoryGrader output
Fetching results...