제출 #858744

#제출 시각아이디문제언어결과실행 시간메모리
858744Halym2007Red-blue table (IZhO19_stones)C++11
38 / 100
47 ms3000 KiB
#include <bits/stdc++.h>
using namespace std;
#define ll long long
const int N = 1e3 + 5;
#define pb push_back
#define sz size()
#define ff first
#define ss second
char a[N][N], p[N][N];
int n, m, jog1, jog;
void solve (char c) {
	for (int i = 1; i <= n; ++i) {
		for (int j = 1; j <= m; ++j) {
			a[i][j] = c;
		}
	}
}

void solve1 (char c) {
	for (int i = 1; i <= n; ++i) {
		for (int j = 1; j <= m; ++j) {
			p[i][j] = c;
		}
	}
}

int jogap () {
	int x, ret = 0;
	for (int i = 1; i <= n; ++i) {
		x = 0;
		for (int j = 1; j <= m; ++j) {
			if (p[i][j] == '+') x++;
			else x--;
		}
		if (x > 0) ret++;
	}
	for (int i = 1; i <= m; ++i) {
		x = 0;
		for (int j = 1; j <= n; ++j) {
			if (p[j][i] == '-') x++;
			else x--;
		}
		if (x > 0) ret++;
	}
	return ret;
}

int main () {
//	freopen("input.txt", "r", stdin);
	int t;
	cin >> t;
	while ( t-- ) {
		cin >> n >> m;
		solve ('+');
		if (n >= m) {
			jog = n + (m - (m / 2 + 1));
			for (int i = 1; i <= n; ++i) {
				for (int j = m / 2 + 2; j <= m; ++j) a[i][j] = '-';
			}
		}
		else {
			jog = m + (n - (n / 2 + 1));
			for (int i = 1; i <= n / 2 + 1; ++i) {
				for (int j = 1; j <= m; ++j) a[i][j] = '-';
			}
		}
		// 1 variant tapdyk
		solve1('-');
		for (int i = 1; i <= (n - 1) / 2; ++i) {
			for (int j = 1; j <= m / 2 + 1; ++j) {
				p[i][j] = '+';
			}
		}
		for (int i = n / 2 + 2; i <= n; ++i) {
			for (int j = (m + 1) / 2; j <= m; ++j) {
				p[i][j] = '+';
			}
		}
		jog1 = jogap();
		if (jog < jog1) {
			jog = jog1;
			for (int i = 1; i <= n; ++i) {
				for (int j = 1; j <= m; ++j) a[i][j] = p[i][j];
			}
		}
//		cout << jog1 << endl;
//		for (int i = 1; i <= n; ++i) {
//			for (int j = 1; j <= m; ++j) {
//				cout << p[i][j];
//			}
//			cout << endl;
//		}
//		cout << endl;
		cout << jog << endl;
		for (int i = 1; i <= n; ++i) {
			for (int j = 1; j <= m; ++j) {
				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...