Submission #1156456

#TimeUsernameProblemLanguageResultExecution timeMemory
1156456ghammazhassanRed-blue table (IZhO19_stones)C++20
100 / 100
29 ms19016 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=1e6+5;
const int M=998244353;
const int LOG = 20;
int n , m , k , c , t=1 , q=1 , x , y , p[N];
int sg[LOG][N];
vector<int>a(N),b(N);
void makesg(){
	for (int i=0;i<N;i++){
		sg[0][i]=b[i];
	}
	for (int j=1;j<LOG;j++){
		for (int i=(int)pow(2,j)-1;i<N;i++){
			sg[j][i]=max(sg[j-1][i],sg[j-1][i-(int)pow(2,j-1)]);
		}
	}
}
int lr(int l,int r){
	int x=log2(r-l+1);
	return max(sg[x][r],sg[x][l+(int)pow(2,x)-1]);
}
void solve()
{
	cin >> n >> m;
	if (n>=m){
		string s;
		swap(n,m);
		for (int i=0;i<m;i++){
			s+='-';
		}
		vector<string>a(n,s);
		vector<int>p1(m,n);
		int x=n/2+1;
		int d=m;
		int k=n*m;
		vector<pair<int,int>>f(m);
		for (int i=0;i<m;i++){
			f[i]={n,i};
		}
		for (int i=0;i<n;i++){
			sort(f.rbegin(),f.rend());
			int c=0;
			for (int j=0;j<m;j++){
				if (c>m/2){
					break;
				}
				if (f[j].first==x)continue;
				f[j].first--;
				a[i][f[j].second]='+';
				k--;
				c++;
			}
			d+=c>m/2;
			
		}
		string h;
		for (int i=0;i<n;i++){
			h+='-';
		}
		vector<string>b(m,h);
		for (int i=0;i<m;i++){
			for (int j=0;j<n;j++){
				if (a[j][i]=='-'){
					b[i][j]='+';
				}
			}
		}
		// cout << k << " " << n*m-k << endl;
		cout << d << endl;
		for (string p:b){
			cout << p << endl;
		}
		return;
	}
	string s;
	for (int i=0;i<m;i++){
		s+='-';
	}
	vector<string>a(n,s);
	vector<int>p1(m,n);
	int x=n/2+1;
	int d=m;
	int k=n*m;
	vector<pair<int,int>>f(m);
	for (int i=0;i<m;i++){
		f[i]={n,i};
	}
	for (int i=0;i<n;i++){
		sort(f.rbegin(),f.rend());
		int c=0;
		for (int j=0;j<m;j++){
			if (c>m/2){
				break;
			}
			if (f[j].first==x)continue;
			f[j].first--;
			a[i][f[j].second]='+';
			k--;
			c++;
		}
		d+=c>m/2;
		
	}
	// cout << k << " " << n*m-k << endl;
	cout << d << endl;
	for (string p:a){
		cout << p << endl;
	}

}
signed main()
{

    ios::sync_with_stdio(0);//DO NOT USE IN INTERACTIVE
    cin.tie(0), cout.tie(0);//DO NOT USE IN INTERACTIVE
    cout << fixed<<setprecision(9);
    // int t=1;
    cin >> t;
    for (int _=1;_<=t;_++){
    	solve();
    	q++;
    }
}
#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...