제출 #1239086

#제출 시각아이디문제언어결과실행 시간메모리
1239086clemmy14Light Bulbs (EGOI24_lightbulbs)C++20
0 / 100
1 ms408 KiB
#include<bits/stdc++.h> using namespace std; int n; vector<vector<int>> cur; void question() { cout << "?" << endl; for(int i=0; i<n; i++) { for(int j=0; j<n; j++) cout << cur[i][j]; cout << endl; } } bool check(int m, int i) { for(int j=0; j<n; j++) cur[i][j]=0; for(int j=0; j<m; j++) cur[i][j]=1; question(); int a; cin >> a; return (m*n == a); } int lastTrue(int lo, int hi, int i) { lo--; while(lo < hi) { int mid = lo+(hi-lo+1)/2; if(check(mid, i)) lo=mid; else hi=mid-1; } return lo; } signed main() { cin >> n; cur = vector<vector<int>>(n, vector<int>(n, 0)); vector<vector<int>> ans=cur; for(int i=0; i<n; i++) { for(int j=0; j<n; j++) cur[i][j]=1; question(); int a; cin >> a; if(a == n*n) { ans=cur; break; } cur[i][0]=0; question(); int b; cin >> b; if(a/n == b/n) { ans[i][0]=1; for(int j=0; j<n; j++) cur[i][j]=0; continue; } int c=lastTrue(0, n, i); ans[i][c]=1; for(int j=0; j<n; j++) cur[i][j]=0; } cout << "!" << endl; for(int i=0; i<n; i++) { for(int j=0; j<n; j++) cout << ans[i][j]; cout << endl; } return 0; }
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...