This submission is migrated from previous version of oj.uz, which used different machine for grading. This submission may have different result if resubmitted.
//#include "mars.h"
#include<bits/stdc++.h>
using namespace std;
typedef long long ll;
string merge(vector <vector<string>> a, int x, int y, int k, int n)
{
	if(x!= 2*(n-k-1) && y!= 2*(n-k-1)) return a[0][0];
	vector<vector<char>> cad(n*2+1,vector<char>(n*2+1,'0'));
	int pl=(k==0);
	for(int i=x; i<=x+1+pl; i++)
	{
		for(int j=y; j<=y+1+pl; j++)
		{
			cad[i][j]=max(cad[i][j],a[i-x][j-y][0]);
		}
	}
	string s;
	for(int i=0; i<cad.size(); i++)
	{
		for(int j=0; j<cad[0].size(); j++)
		{
			s+=cad[i][j];
		}
	}
	while(s.size()<100) s+='0';
	if(!pl)
	{
		for(int j=0; j<3; j++)
		for(int i=0; i<100; i++)
		{
			if(x== 2*(n-k-1))
			s[i]=max(s[i],a[2][j][i]);
			if(y== 2*(n-k-1))
			s[i]=max(s[i],a[j][2][i]);
		}
	}
	return s;
}
vector<vector<char>> cad;
ll dx[]={1, 0,-1, 0};
ll dy[]={0, 1, 0,-1};
void dfs(ll i,ll j)
{
	if(cad[i][j]=='0') return;
	cad[i][j]='0';
	for(int k=0; k<4; k++)
	{
		dfs(dx[k]+i,dy[k]+j);
	}
}
std::string process(std::vector <std::vector<std::string>> a, int i, int j, int k, int n)
{
	if(k==n-1) 
	{
		string temp=merge(a,i,j,k,n);
		cad.assign(n*2+4,vector<char>(n*2+4,'0'));
		for(int i=0; i<(2*n+1); i++)
		{
			for(int j=0; j<(2*n+1); j++)
			{
				cad[i+1][j+1]=temp[i*(2*n+1)+j];
			}
		}
		ll cont=0;
		for(int i=1; i<cad.size()-1; i++)
		{
			for(int j=1; j<cad[0].size()-1; j++)
			{
				if(cad[i][j]!='0')
				{
					cont++;
					dfs(i,j);
				}
			}
		}
		string sol="";
		while(cont>0)
		{
			sol+=(cont%2+'0');
			cont/=2;
		}
		while(sol.size()<100) sol+='0';
		return sol;
	}
	else return merge(a,i,j,k,n);
}
Compilation message (stderr)
mars.cpp: In function 'std::string merge(std::vector<std::vector<std::__cxx11::basic_string<char> > >, int, int, int, int)':
mars.cpp:18:16: warning: comparison of integer expressions of different signedness: 'int' and 'std::vector<std::vector<char> >::size_type' {aka 'long unsigned int'} [-Wsign-compare]
   18 |  for(int i=0; i<cad.size(); i++)
      |               ~^~~~~~~~~~~
mars.cpp:20:17: warning: comparison of integer expressions of different signedness: 'int' and 'std::vector<char>::size_type' {aka 'long unsigned int'} [-Wsign-compare]
   20 |   for(int j=0; j<cad[0].size(); j++)
      |                ~^~~~~~~~~~~~~~
mars.cpp: In function 'std::string process(std::vector<std::vector<std::__cxx11::basic_string<char> > >, int, int, int, int)':
mars.cpp:65:17: warning: comparison of integer expressions of different signedness: 'int' and 'std::vector<std::vector<char> >::size_type' {aka 'long unsigned int'} [-Wsign-compare]
   65 |   for(int i=1; i<cad.size()-1; i++)
      |                ~^~~~~~~~~~~~~
mars.cpp:67:18: warning: comparison of integer expressions of different signedness: 'int' and 'std::vector<char>::size_type' {aka 'long unsigned int'} [-Wsign-compare]
   67 |    for(int j=1; j<cad[0].size()-1; j++)
      |                 ~^~~~~~~~~~~~~~~~| # | Verdict | Execution time | Memory | Grader output | 
|---|
| Fetching results... | 
| # | Verdict | Execution time | Memory | Grader output | 
|---|
| Fetching results... | 
| # | Verdict | Execution time | Memory | Grader output | 
|---|
| Fetching results... | 
| # | Verdict | Execution time | Memory | Grader output | 
|---|
| Fetching results... | 
| # | Verdict | Execution time | Memory | Grader output | 
|---|
| Fetching results... | 
| # | Verdict | Execution time | Memory | Grader output | 
|---|
| Fetching results... | 
| # | Verdict | Execution time | Memory | Grader output | 
|---|
| Fetching results... | 
| # | Verdict | Execution time | Memory | Grader output | 
|---|
| Fetching results... | 
| # | Verdict | Execution time | Memory | Grader output | 
|---|
| Fetching results... | 
| # | Verdict | Execution time | Memory | Grader output | 
|---|
| Fetching results... |