제출 #1171962

#제출 시각아이디문제언어결과실행 시간메모리
1171962coolboy19521Red-blue table (IZhO19_stones)C++20
100 / 100
149 ms5284 KiB
#include "bits/stdc++.h"

#define mxN 1003

using namespace std;

int a[mxN][mxN];
int cn[mxN];

int solve(int N, int M){
	int res = M;
	
	memset(a, 0, sizeof(a));
	memset(cn, 0, sizeof(cn));
	
	for (int i = 1; i <= N; i ++){
		vector<pair<int,int>> vp;

		for (int j = 1; j <= M; j ++)
			if ((cn[j] + 1) * 2 < N)
				vp.emplace_back(cn[j], j);

		if (vp.size() * 2 <= M) break;
		sort(begin(vp), end(vp));

		for (int j = 0; ; j ++){
			a[i][vp[j].second] = 1;
			cn[vp[j].second] ++;
			if ((j + 1) * 2 > M) break;
		}
		res ++;
	}
	return res;
}

int main(){
	int T;
	cin >> T;
	
	while (T --){
		int N, M;
		cin >> N >> M;
		
		int f = 0;
		if (N > M) swap(N, M), f = 1;
		
		int loc = solve(N, M);
		cout << loc << endl;
		
		if (f) swap(N, M);
		
		for (int i = 1; i <= N; i ++){
			for (int j = 1; j <= M; j ++)
				if (f) 	cout << (a[j][i] ? '-' : '+');
				else	cout << (a[i][j] ? '+' : '-');
			cout << endl;
		}
	}
}
#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...