제출 #154297

#제출 시각아이디문제언어결과실행 시간메모리
154297nvmdavaRed-blue table (IZhO19_stones)C++17
100 / 100
57 ms5368 KiB
#include <bits/stdc++.h>
using namespace std;
#define ll long long
#define ff first
#define ss second

#define N 1200005
#define MOD 1000000007
#define INF 0x3f3f3f3f
int res, cur;
int t[1005][1005];
int cnt[1005];

void go(){
	int n, m;
	cin>>n>>m;
	bool sw = 0;
	if(n < m){
		sw = 1;
		swap(n, m);
	}
	int cur = n;
	for(int i = 1; i <= n; i++){
		cnt[i] = m;
		for(int j = 1; j <= m; j++){
			t[i][j] = 1;
		}
	}

	int q = (n + 2) >> 1;
	for(int j = 1; j <= m; j++){
		bool ok = 0;
		for(int i = 0; i < q; i++){
			t[(i + (j - 1) * q) % n + 1][j] = 0;
			cnt[(i + (j - 1) * q) % n + 1]--;
			if(cnt[(i + (j - 1) * q) % n + 1] <= m / 2){
				ok = 1;
			}
		}
		if(ok){
			for(int i = 0; i < q; i++){
				t[(i + (j - 1) * q) % n + 1][j] = 1;
			}
			break;
		}
		cur++;
	}
	cout<<cur<<'\n';
	if(sw == 0){
		for(int i = 1; i <= n; i++){
			for(int j = 1; j <= m; j++){
				cout<<(t[i][j] == 1 ? '+' : '-');
			}
			cout<<'\n';
		}
	} else {
		for(int j = 1; j <= m; j++){
			for(int i = 1; i <= n; i++){
				cout<<(t[i][j] == 1 ? '-' : '+');
			}
			cout<<'\n';
		}
	}
}

int main(){
	ios_base::sync_with_stdio(0);
	cin.tie(0);
	cout.tie(0);

	mt19937 rng(chrono::steady_clock::now().time_since_epoch().count());
	
	int t;
	cin>>t;
	while(t--){
		go();
	}	
}
#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...