제출 #1151724

#제출 시각아이디문제언어결과실행 시간메모리
1151724MuhammadSaramLight Bulbs (EGOI24_lightbulbs)C++20
60.67 / 100
319 ms432 KiB
#include <bits/stdc++.h>

using namespace std;

const int M = 100;

int n;
bool a[M][M];

void que()
{
	cout<<"?"<<endl;
	for (int i=0;i<n;i++)
	{
		for (int j=0;j<n;j++)
			cout<<a[i][j];
		cout<<endl;
	}
	for (int i=0;i<n;i++)
		for (int j=0;j<n;j++)
			a[i][j]=0;
}

int main()
{
	int x;
	cin>>n;
	bool ans[n][n]={};
	for (int i=0;i<n;i++)
	{
		a[i][0]=a[i][1]=1;
		que();
		cin>>x;
		if (x==n)
		{
			ans[i][0]=1;
			continue;
		}
		if (x!=2*n)
		{
			a[i][1]=a[i][2]=1;
			que();
			cin>>x;
			if (x==2*n)
			{
				ans[i][0]=1;
				continue;
			}
			else if(x==n)
			{
				ans[i][1]=1;
				continue;
			}
			a[i][0]=a[i][1]=a[i][2]=1;
			que();
			cin>>x;
			if (x==2*n-1)
				ans[i][0]=1;
			else
				ans[i][1]=1;
			continue;
		}
		int s=2,e=n+1;
		while (s+1<e)
		{
			int mid=(s+e)/2;
			for (int j=1;j<n;j++)
				a[i][j]=(j<mid);
			que();
			int x;
			cin>>x;
			if (x%n)
				e=mid;
			else
				s=mid;
		}
		if (s==n)
		{
			cout<<"!"<<endl;
			for (int j=0;j<n;j++)
			{
				string ss(n,'0'),s1(n,'1');
				if (j==i)
					cout<<s1<<endl;
				else
					cout<<ss<<endl;
			}
			return 0;
		}
		ans[i][s]=1;
	}
	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...