#include <bits/stdc++.h>
using namespace std;
bool q[109][109], a[109][109];
int n;
vector<int> perm;
int ask(){
printf("?\n");
for(int i=0; i<n; i++){
for(int j=0; j<n; j++){
printf("%d", q[perm[i]][perm[j]]);
}
printf("\n");
}
fflush(stdout);
int val;
scanf("%d", &val);
return val;
}
void answer(){
printf("!\n");
for(int i=0; i<n; i++){
for(int j=0; j<n; j++){
printf("%d", a[perm[i]][perm[j]]);
}
printf("\n");
}
fflush(stdout);
}
int main(){
scanf("%d", &n);
int i, j;
for(i=0; i<n; i++)
perm.push_back(i);
random_shuffle(perm.begin(), perm.end());
for(i=0; i<n; i++){
int lo = 0, hi = n-1, mid;
memset(q, 0, sizeof(q));
for(j=0; j<n; j++)
q[i][j] = 1;
if(ask() == n*n){
memset(a, 0, sizeof(a));
for(int j=0; j<n; j++)
a[i][j] = 1;
answer();
return 0;
}
while(lo < hi){
mid = (lo+hi)/2;
memset(q, 0, sizeof(q));
if(hi-lo == 2){
q[i][lo] = q[i][lo+1] = 1;
if(ask() == n * 2)
lo += 2;
else{
q[i][lo] = 0;
q[i][lo+2] = 1;
if(ask() == n*2)
hi = lo;
else{
q[i][lo+1] = 0;
q[i][lo] = 1;
if(ask() == n)
hi = lo;
else
hi = lo = lo+1;
}
}
continue;
}
if(hi-lo == 3)
mid++;
else if(hi-lo == 4)
mid++;
else{
mid = hi-2;
}
for(int j=lo; j<=mid; j++)
q[i][j] = 1;
if(ask() == n * (mid-lo+1))
lo = mid+1;
else
hi = mid;
}
a[i][lo] = 1;
}
answer();
return 0;
}
Compilation message
Main.cpp: In function 'int ask()':
Main.cpp:16:7: warning: ignoring return value of 'int scanf(const char*, ...)' declared with attribute 'warn_unused_result' [-Wunused-result]
16 | scanf("%d", &val);
| ~~~~~^~~~~~~~~~~~
Main.cpp: In function 'int main()':
Main.cpp:30:7: warning: ignoring return value of 'int scanf(const char*, ...)' declared with attribute 'warn_unused_result' [-Wunused-result]
30 | scanf("%d", &n);
| ~~~~~^~~~~~~~~~
# |
결과 |
실행 시간 |
메모리 |
Grader output |
1 |
Correct |
0 ms |
344 KB |
Output is correct |
2 |
Correct |
0 ms |
344 KB |
Output is correct |
3 |
Correct |
0 ms |
344 KB |
Output is correct |
4 |
Correct |
0 ms |
344 KB |
Output is correct |
5 |
Correct |
0 ms |
344 KB |
Output is correct |
6 |
Correct |
0 ms |
344 KB |
Output is correct |
7 |
Correct |
0 ms |
344 KB |
Output is correct |
8 |
Correct |
0 ms |
344 KB |
Output is correct |
9 |
Correct |
0 ms |
344 KB |
Output is correct |
10 |
Correct |
0 ms |
344 KB |
Output is correct |
11 |
Correct |
0 ms |
344 KB |
Output is correct |
12 |
Correct |
0 ms |
344 KB |
Output is correct |
13 |
Correct |
0 ms |
344 KB |
Output is correct |
14 |
Correct |
0 ms |
344 KB |
Output is correct |
15 |
Correct |
0 ms |
344 KB |
Output is correct |
16 |
Correct |
0 ms |
344 KB |
Output is correct |
17 |
Correct |
0 ms |
344 KB |
Output is correct |
# |
결과 |
실행 시간 |
메모리 |
Grader output |
1 |
Correct |
0 ms |
344 KB |
Output is correct |
2 |
Correct |
0 ms |
344 KB |
Output is correct |
3 |
Correct |
0 ms |
344 KB |
Output is correct |
4 |
Correct |
0 ms |
344 KB |
Output is correct |
5 |
Correct |
0 ms |
344 KB |
Output is correct |
6 |
Correct |
0 ms |
344 KB |
Output is correct |
7 |
Correct |
0 ms |
344 KB |
Output is correct |
8 |
Correct |
0 ms |
344 KB |
Output is correct |
9 |
Correct |
0 ms |
344 KB |
Output is correct |
10 |
Correct |
0 ms |
344 KB |
Output is correct |
11 |
Correct |
0 ms |
344 KB |
Output is correct |
12 |
Correct |
0 ms |
344 KB |
Output is correct |
13 |
Correct |
0 ms |
344 KB |
Output is correct |
14 |
Correct |
0 ms |
344 KB |
Output is correct |
15 |
Correct |
0 ms |
344 KB |
Output is correct |
16 |
Correct |
0 ms |
344 KB |
Output is correct |
17 |
Correct |
0 ms |
344 KB |
Output is correct |
18 |
Correct |
1 ms |
344 KB |
Output is correct |
19 |
Correct |
0 ms |
344 KB |
Output is correct |
20 |
Correct |
1 ms |
344 KB |
Output is correct |
21 |
Correct |
1 ms |
344 KB |
Output is correct |
22 |
Correct |
2 ms |
344 KB |
Output is correct |
23 |
Correct |
1 ms |
344 KB |
Output is correct |
24 |
Runtime error |
12 ms |
452 KB |
Execution killed with signal 13 |
25 |
Halted |
0 ms |
0 KB |
- |
# |
결과 |
실행 시간 |
메모리 |
Grader output |
1 |
Correct |
1 ms |
344 KB |
Output is correct |
2 |
Correct |
0 ms |
344 KB |
Output is correct |
3 |
Correct |
1 ms |
344 KB |
Output is correct |
4 |
Correct |
0 ms |
344 KB |
Output is correct |
5 |
Correct |
0 ms |
344 KB |
Output is correct |
6 |
Correct |
0 ms |
344 KB |
Output is correct |
7 |
Correct |
0 ms |
344 KB |
Output is correct |
8 |
Correct |
0 ms |
596 KB |
Output is correct |
9 |
Correct |
0 ms |
344 KB |
Output is correct |
10 |
Correct |
0 ms |
344 KB |
Output is correct |
11 |
Correct |
0 ms |
344 KB |
Output is correct |
12 |
Correct |
0 ms |
344 KB |
Output is correct |
13 |
Correct |
0 ms |
344 KB |
Output is correct |
14 |
Correct |
0 ms |
344 KB |
Output is correct |
15 |
Correct |
0 ms |
344 KB |
Output is correct |
16 |
Correct |
0 ms |
344 KB |
Output is correct |
17 |
Correct |
0 ms |
344 KB |
Output is correct |
18 |
Correct |
1 ms |
344 KB |
Output is correct |
19 |
Correct |
0 ms |
344 KB |
Output is correct |
20 |
Correct |
1 ms |
344 KB |
Output is correct |
21 |
Correct |
1 ms |
344 KB |
Output is correct |
22 |
Correct |
1 ms |
344 KB |
Output is correct |
23 |
Correct |
2 ms |
344 KB |
Output is correct |
24 |
Runtime error |
12 ms |
344 KB |
Execution killed with signal 13 |
25 |
Halted |
0 ms |
0 KB |
- |