Submission #1151816

#TimeUsernameProblemLanguageResultExecution timeMemory
1151816Jawad_Akbar_JJLight Bulbs (EGOI24_lightbulbs)C++20
60.70 / 100
230 ms468 KiB
#include <iostream> #include <vector> using namespace std; int n, a[105], col[105][105], ans[105], seen[100000]; int print(){ cout<<"?\n"; for (int i=1;i<=n;i++){ for (int j=1;j<=n;j++) cout<<col[i][j], col[i][j] = 0; if (i < n) cout<<'\n'; else cout<<endl; } cin>>col[0][0]; return col[0][0]; } int get(pair<int,int> A, pair<int,int> B){ col[A.first][A.second] = 1; col[B.first][B.second] = 1; return print(); } int get(int rw, int l, int r){ for (int i=l;i<=r;i++) col[rw][i] = 1; return print(); } int main(){ cin>>n; for (int i=2;i<=n;i++){ ans[i] = get({1, 1}, {i, 1}); seen[ans[i]] = 1; if (ans[i] % n != 0) a[i] = 1; } if (seen[n] or (seen[2 * n] == 0 and get({2, 1}, {3, 1}) == 2 * n)){ for (int i=1;i<=n;i++) a[i] ^= 1; } vector<pair<int, int>> vec; for (int i=1;i<=n;i++){ if (a[i] == 0){ vec.push_back({i, 1}); continue; } int l = 1, r = n + 1; while (l + 1 < r){ int mid = (l + r) / 2; if (get(i, 1, mid) == mid * n) l = mid; else r = mid; } if (l == n){ vec.clear(); for (int j=1;j<=n;j++) vec.push_back({i, j}); break; } vec.push_back({i, l + 1}); } for (auto [i, j] : vec) col[i][j] = 1; cout<<"!\n"; for (int i=1;i<=n;i++){ for (int j=1;j<=n;j++) cout<<col[i][j]; if (i < n) cout<<'\n'; else cout<<endl; } }
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...