#include <bits/stdc++.h>
using namespace std;
int main(){
ios::sync_with_stdio(false);
cin.tie(nullptr);
int T;
cin >> T;
while (T--) {
int N, M;
cin >> N >> M;
// 1) compute the maximum
int best;
if (N == 1 || M == 1) {
best = max(N, M);
} else {
best = N + M - 2;
}
cout << best << "\n";
// 2) build the grid
// Case: single row
if (N == 1) {
// To maximize B, make every cell '-'
// (each of the M columns has 1 blue > 0 red)
cout << string(M, '-') << "\n";
continue;
}
// Case: single column
if (M == 1) {
// To maximize A, make every cell '+'
// (each of the N rows has 1 red > 0 blue)
for (int i = 0; i < N; i++)
cout << "+\n";
continue;
}
// General N,M >= 2:
// • We “sacrifice” row 0 by filling it all with '-' → it has no red-majority.
// • We “sacrifice” column M-1 by filling it all with '+' → it has no blue-majority.
// • Every other row has exactly one '-' (in col M-1) and M-1 '+' → red-majority.
// • Every other column has exactly one '+' (in row 0) and N-1 '-' → blue-majority.
//
// Thus A = N-1, B = M-1, A+B = N+M-2.
for (int i = 0; i < N; i++) {
for (int j = 0; j < M; j++) {
if (i == 0) {
// sacrificed row → all blues
cout << '-';
}
else if (j == M-1) {
// sacrificed column → all reds
cout << '+';
}
else {
// interior → give red to help rows
cout << '+';
}
}
cout << "\n";
}
}
return 0;
}
# | Verdict | Execution time | Memory | Grader output |
---|
Fetching results... |
# | Verdict | Execution time | Memory | Grader output |
---|
Fetching results... |
# | Verdict | Execution time | Memory | Grader output |
---|
Fetching results... |
# | Verdict | Execution time | Memory | Grader output |
---|
Fetching results... |
# | Verdict | Execution time | Memory | Grader output |
---|
Fetching results... |
# | Verdict | Execution time | Memory | Grader output |
---|
Fetching results... |