Submission #1156403

#TimeUsernameProblemLanguageResultExecution timeMemory
1156403MuhammadSaramRed-blue table (IZhO19_stones)C++20
38 / 100
15 ms1860 KiB
#include <bits/stdc++.h>

using namespace std;

#define int long long

const int mod = 1e9 + 7, V = 32;

vector<string> sol(int n,int m)
{
	vector<string> v;
	for (int i=0;i<n/2;i++)
	{
		string s(m/2+1,'+'),s1(m/2,'-');
		s+=s1;
		v.push_back(s);
	}
	string wh(m,'-');
	v.push_back(wh);
	for (int i=0;i<n/2;i++)
	{
		string s(m/2+1,'+'),s1(m/2,'-');
		s1+=s;
		v.push_back(s1);
	}
	return v;
}

signed main()
{
	int t;
	cin>>t;
	while (t--)
	{
		int n,m;
		cin>>n>>m;
		if (min(n,m)<=2)
		{
			cout<<max(n,m)<<endl;
			char c='+';
			if (min(n,m)==n)
				c='-';
			for (int i=0;i<n;i++)
			{
				string s(m,c);
				cout<<s<<endl;
			}
		}
		else if(min(n,m)<=4)
		{
			cout<<max(n,m)+1<<endl;
			if (min(n,m)==n)
			{
				string s(m,'-');
				for (int i=0;i<n/2+1;i++)
					cout<<s<<endl;
				string s1(m,'+');
				for (int i=1;i<n-n/2;i++)
					cout<<s1<<endl;
			}
			else
			{
				string s(m/2+1,'+');
				for (int i=1;i<m-m/2;i++)
					s+='-';
				for (int i=0;i<n;i++)
					cout<<s<<endl;
			}
		}
		else if (n%2 && m%2)
		{
			cout<<n+m-2<<endl;
			vector<string> v=sol(n,m);
			for (auto i:v)
				cout<<i<<endl;
		}
		else if (n%2)
		{
			cout<<n+m-3<<endl;
			vector<string> v=sol(n,m-1);
			for (auto i:v)
				cout<<i<<'+'<<endl;
		}
		else if(m%2)
		{
			cout<<n+m-3<<endl;
			vector<string> v=sol(n-1,m);
			for (auto i:v)
				cout<<i<<endl;
			string s(m,'-');
			cout<<s<<endl;
		}
		else
		{
			cout<<n+m-4<<endl;
			vector<string> v=sol(n-1,m-1);
			for (auto i:v)
				cout<<i<<'+'<<endl;
			string s(m,'-');
			cout<<s<<endl;
		}
	}
	
	return 0;
}
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...