제출 #1357269

#제출 시각아이디문제언어결과실행 시간메모리
1357269hsuan._.0528Light Bulbs (EGOI24_lightbulbs)C++20
22 / 100
41 ms880 KiB

//pC
#include<bits/stdc++.h>
using namespace std;
#define LL long long
const int maxn = 1000+10;

int n, ans=1e9, kk=0;
string s[maxn];
int cat[maxn][maxn];

int run(){
    cout<<"?"<<endl;
    for(int i=0; i<n; i++)  cout<<s[i]<<endl;
    int a;  cin>>a;
    return a;
}


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

    cin>>n;
    for(int i=0; i<n; i++)  s[i]=string(n, '0');
    s[0][0]='1';
    cat[0][0]=1;
    for(int i=1; i<n; i++){
      s[0][i]='1';
      int num=run();
      if(num == n or num == 2*n)  cat[0][i]=cat[0][0];
      else  cat[0][i]=cat[0][0]^1;
      s[0][i]='0';
    }
    s[0][0]='0';

    for(int i=0; i<n; i++){
      s[0][i]='1';
      for(int j=1; j<n; j++){
        s[j][i]='1';
        int num=run();
        if(num == n or num == 2*n)  cat[j][i]=cat[0][i];
        else  cat[j][i]=cat[0][i]^1;
        s[j][i]='0';
      }
      s[0][i]='0';
    }
  
  /*
    for(int i=0; i<n; i++)  s[i]=string(n, '0');
    for(int i=0; i<n; i++){
        for(int j=0; j<n; j++){
            cout<<cat[i][j]<<" ";
        }
      cout<<"\n";
    }*/
//-----
    for(int i=0; i<n; i++)  s[i]=string(n, '0');
    for(int i=0; i<n; i++)
        for(int j=0; j<n; j++){
            if(cat[i][j]==1){
                s[i][j]='1';
                break;
            }
        }
    if(run()==n*n){
      cout<<"!"<<endl;
      for(int i=0; i<n; i++)  cout<<s[i]<<endl;
      return 0;
    }
//-----
    for(int i=0; i<n; i++)  s[i]=string(n, '0');
    for(int i=0; i<n; i++)
        for(int j=0; j<n; j++){
            if(cat[i][j]==0){
                s[i][j]='1';
                break;
            }
        }
    if(run()==n*n){
      cout<<"!"<<endl;
      for(int i=0; i<n; i++)  cout<<s[i]<<endl;
      return 0;
    }
  
//-----
    for(int i=0; i<n; i++)  s[i]=string(n, '0');
    for(int j=0; j<n; j++)
        for(int i=0; i<n; i++){
            if(cat[i][j]==1){
                s[i][j]='1';
                break;
            }
        }
    if(run()==n*n){
      cout<<"!"<<endl;
      for(int i=0; i<n; i++)  cout<<s[i]<<endl;
      return 0;
    }
  
//-----
    for(int i=0; i<n; i++)  s[i]=string(n, '0');
    for(int j=0; j<n; j++)
        for(int i=0; i<n; i++){
            if(cat[i][j]==0){
                s[i][j]='1';
                break;
            }
        }
    if(run()==n*n){
      cout<<"!"<<endl;
      for(int i=0; i<n; i++)  cout<<s[i]<<endl;
      return 0;
    }
    return 0;
}
#결과 실행 시간메모리채점기 출력
결과를 불러오는 중입니다…
#결과 실행 시간메모리채점기 출력
결과를 불러오는 중입니다…
#결과 실행 시간메모리채점기 출력
결과를 불러오는 중입니다…