Submission #1151831

#TimeUsernameProblemLanguageResultExecution timeMemory
1151831ghammazhassanLight Bulbs (EGOI24_lightbulbs)C++20
22 / 100
78 ms452 KiB
#include <bits/stdc++.h>
// #include <iostream>
// #include <cmath>
// #include <algorithm>
// #include <map>
// #include <vector>
// #include <iomanip>
// #include <string>
// #include <queue>
// #include <set>
// #include <deque>
using namespace std;
// #define int long long
// const int N=3e5+5;
// const int M=998244353;
// const int LOG = 18;
int n , m , c , t=1 , q=1 , x , y;

void solve()
{
	cin >> n;
	string s="";
	for (int i=0;i<n;i++){
		s+='0';
	}
	vector<string>an(n,s);
	vector<string>a(n,s);
	for (int i=0;i<n;i++){
		for (int j=0;j<n;j++){
			a[i][j]='1';
		}
		cout << "?" << endl;
		for (int j=0;j<n;j++){
			cout << a[j] << endl;
		}
		cin >> x;
		if (x==n*n){
			cout << "!" << endl;
			for (string i:a){
				cout << i << endl;
			}
			return;
		}
		int r=0;
		if (x==n*n-n+1){
			a[i][n-1]='0';
			cout << "?" << endl;
			for (string p:a){
				cout << p << endl;
			}
			cin >> y;
			if (x-y==1){
				an[i][n-1]='H';
				r=1;
			}
			a[i][n-1]='1';
		}
		int o=x;
		for (int j=0;j<n;j++){
			if (an[i][j]=='H')continue;
			a[i][j]='0';
			cout << "?" << endl;
			for (string p:a){
				cout << p << endl;
			}
			cin >> y;
			// cout << (x-y==j+1) << " ";
			if (o==n*n-n+1){
				if (x-y==j+1 and r==0){
					r=1;
					an[i][j]='H';
					a[i][j]='1';
				}
				else{
					an[i][j]='V';
					x=y;
				}
			}
			else if (x-y<2){
				an[i][j]='H';
				a[i][j]='1';
			}
			else{
				an[i][j]='V';
				x=y;
			}
		}
		for (int j=0;j<n;j++){
			a[i][j]='0';
		}
	}
	// for (int i=0;i<n;i++){
	// 	cout << an[i] << endl;
	// }
	bool f=1;
	vector<int>in(n,-1);
	for (int i=0;i<n;i++){
		for (int j=0;j<n;j++){
			if (an[i][j]=='H'){
				in[i]=j;
			}
		}
		if (in[i]==-1)f=0;
	}
	if (f){
		for(int i=0;i<n;i++){
			a[i][in[i]]='1';
		}
		cout << "!" << endl;
		for (string p:a){
			cout << p << endl;
		}
		return;
	}
	vector<int>ind(n,-1);
	for (int j=0;j<n;j++){
		for (int i=0;i<n;i++){
			if (an[i][j]=='V'){
				ind[j]=i;
			}
		}
		if (ind[j]==-1){
			cout << -1 << endl;
			return;
		}
	}
	for(int i=0;i<n;i++){
		a[ind[i]][i]='1';
	}
	cout << "!" << endl;
	for (string p:a){
		cout << p << endl;
	}

}
signed main()
{

    
    for (int _=1;_<=t;_++){
    	solve();
    	q++;
    }
}
// HVH
// VHV
// HHV

// VVVVVH
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...