제출 #859982

#제출 시각아이디문제언어결과실행 시간메모리
859982Halym2007Red-blue table (IZhO19_stones)C++11
17 / 100
63 ms1700 KiB
#include <bits/stdc++.h>
using namespace std;
#define ff first
#define ss second
const int N = 1e3 + 5;
priority_queue <pair <int, int>> q; 
char jog[N][N];

int main() {
	int t;
	cin >> t;
	while ( t-- ) {
		int n, m;
		cin >> n >> m;
		bool tr = 0;
		if (n < m) {
			swap (n, m);
			tr = 1;
		}
		for (int i = 1; i <= n; ++i) {
			for (int j = 1; j <= m; ++j) {
				jog[i][j] = '+';
			}
		}
		int a = n / 2 + 1;
		int b = (m - 1) / 2;
		int ans = n + ((n * b) / a);
		for (int i = 1; i <= n; ++i) {
			if (b) q.push({b, i});
		}
		for (int i = 1; i <= b; ++i) { 
			for (int j = 1; j <= a; ++j) { 
				if (q.empty()) break;
				pair <int, int> x = q.top();
				q.pop();
				jog[x.ss][i] = '-';
				if (x.ff > 1) {
					q.push ({x.ff - 1, x.ss});
				} 
			}
			if (q.empty()) break;
		}
		if (tr) { 
			cout << ans << endl;
			for (int i = 1; i <= n; ++i) {
				for (int j = m; j > 0; j--) {
					if (jog[i][j] == '-') jog[i][j] = '+';
					else jog[i][j] = '-';
				}
			}
			int l1 = 1, r1 = m;
			for (int i = 1; i <= m; ++i) {
				for (int j = 1; j <= n; ++j) {
					cout << jog[l1][r1];
					l1++;
				}
				l1 = 1;
				r1--;
				cout << endl;
			}
		}
		else {
			cout << ans << endl;
			for (int i = 1; i <= n; ++i) {
				for (int j = 1; j <= m; ++j) {
					cout << jog[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...