#pragma GCC optimize("O3", "unroll-loops") // "Ofast"
#pragma GCC target("avx2", "bmi", "bmi2", "lzcnt", "popcnt")
#include <bits/stdc++.h>
#define int long long
#define vt vector
#define pb push_back
#define all(x) (x).begin(), (x).end()
#define sz(x) (int)(x).size()
#define ff first
#define ss second
#define dbg(x) cerr << #x << " = " << x << '\n'
using namespace std;
using ll = long long;
using pii = pair<int, int>;
using vvi = vt< vt<int> >;
using vc = vt<char>;
using vvc = vt<vc>;
const int N = 1e6 + 5, mod = 1e9 + 7, inf = 1e18 + 7, B = 500, LIM = (1ll << 60);
const double eps = 1e-6;
int n, m;
void solve_odd (vvc a) {
cout << n - 1 + m - 1 << '\n';
for (int i = 1; i < n; i++) {
for (int j = 1; j < m; j++) {
if ((i + j) & 1) a[i][j] = '-';
}
}
for (int j = 1; j <= m; j++) a[n][j] = '-';
for (int i = 1; i <= n; i++) {
for (int j = 1; j <= m; j++) cout << a[i][j];
cout << '\n';
}
}
void solve_m1 (vvc a) {
cout << n << '\n';
for (int i = 1; i <= n; i++) {
for (int j = 1; j <= m; j++) cout << a[i][j];
cout << '\n';
}
}
void solve_n1 (vvc a) {
cout << m << '\n';
for (int j = 1; j <= m; j++) a[1][j] = '-';
for (int i = 1; i <= n; i++) {
for (int j = 1; j <= m; j++) cout << a[i][j];
cout << '\n';
}
}
void solve_1 (vvc a) {
if (n == 2) {
cout << m << '\n';
if (m == 3 || m == 4) {
for (int i = 1; i <= n; i++) {
for (int j = 1; j <= m; j++) a[i][j] = '-';
}
}
}
if (n == 3) {
if (m == 2) cout << n << '\n';
if (m == 3) cout << "4\n", a[1][1] = a[2][2] = a[3][1] = a[3][2] = a[3][3] = '-';
if (m == 4) {
cout << "5\n";
for (int i = 2; i <= n; i++) {
for (int j = 1; j <= m; j++) a[i][j] = '-';
}
}
}
if (n == 4) {
if (m == 2) cout << n << '\n';
if (m == 3 || m == 4) {
cout << "5\n";;
for (int i = 1; i <= n; i++) a[i][m] = '-';
}
}
for (int i = 1; i <= n; i++) {
for (int j = 1; j <= m; j++) cout << a[i][j];
cout << '\n';
}
}
void solve () {
cin >> n >> m;
vvc a(n + 1, vc (m + 1, '+'));
if (m == 1) return (void)(solve_m1(a));
if (n == 1) return (void)(solve_n1(a));
bool sub1 = (n <= 4 && m <= 4), sub4 = ((n & 1) && (m & 1));
if (sub1) {
solve_1(a);
return;
}
if (sub4) {
solve_odd(a);
return;
}
cout << '\n';
}
bool testcases = 1;
signed main() {
#ifdef ONLINE_JUDGE
freopen(".in", "r", stdin);
freopen(".out", "w", stdout);
#endif
cin.tie(0) -> sync_with_stdio(0);
int test = 1;
if (testcases) cin >> test;
for (int cs = 1; cs <= test; cs++) {
solve();
}
}
# |
결과 |
실행 시간 |
메모리 |
Grader output |
1 |
Correct |
1 ms |
204 KB |
Output is correct |
2 |
Correct |
1 ms |
204 KB |
Output is correct |
# |
결과 |
실행 시간 |
메모리 |
Grader output |
1 |
Incorrect |
1 ms |
332 KB |
Wrong answer |
2 |
Halted |
0 ms |
0 KB |
- |
# |
결과 |
실행 시간 |
메모리 |
Grader output |
1 |
Correct |
1 ms |
204 KB |
Output is correct |
2 |
Correct |
1 ms |
204 KB |
Output is correct |
3 |
Incorrect |
1 ms |
332 KB |
Wrong answer |
4 |
Halted |
0 ms |
0 KB |
- |
# |
결과 |
실행 시간 |
메모리 |
Grader output |
1 |
Correct |
28 ms |
1300 KB |
Output is correct |
2 |
Correct |
24 ms |
2244 KB |
Output is correct |
3 |
Correct |
19 ms |
2540 KB |
Output is correct |
# |
결과 |
실행 시간 |
메모리 |
Grader output |
1 |
Incorrect |
12 ms |
824 KB |
Wrong answer |
2 |
Halted |
0 ms |
0 KB |
- |
# |
결과 |
실행 시간 |
메모리 |
Grader output |
1 |
Correct |
1 ms |
204 KB |
Output is correct |
2 |
Correct |
1 ms |
204 KB |
Output is correct |
3 |
Incorrect |
1 ms |
332 KB |
Wrong answer |
4 |
Halted |
0 ms |
0 KB |
- |