Submission #990502

#TimeUsernameProblemLanguageResultExecution timeMemory
990502tch1cherinRed-blue table (IZhO19_stones)C++17
100 / 100
20 ms2396 KiB
#include <bits/stdc++.h> using namespace std; vector<string> build(int N, int M, int h, int w) { vector<string> A(N, string(M, 0)); if (h > 0) { assert(M % 2 == 0); string rot(N, '-'); fill(rot.begin(), rot.begin() + (N + 1) / 2, '+'); for (int j = 0; j < M; j++) { for (int i = 0; i < N; i++) { A[i][j] = rot[i]; } rotate(rot.begin(), rot.begin() + (N + 1) / 2, rot.end()); } } else { assert(N % 2 == 0); string rot(M, '+'); fill(rot.begin(), rot.begin() + (M + 1) / 2, '-'); for (int i = 0; i < N; i++) { for (int j = 0; j < M; j++) { A[i][j] = rot[j]; } rotate(rot.begin(), rot.begin() + (M + 1) / 2, rot.end()); } } return A; } int main() { cin.tie(nullptr)->sync_with_stdio(false); int T; cin >> T; while (T--) { int N, M; cin >> N >> M; if (N <= 2 || M <= 2) { cout << max(N, M) << "\n"; for (int i = 0; i < N; i++) { cout << string(M, "-+"[N > M]) << "\n"; } } else { int h, w; if (N % 2 && M % 2) { h = w = 1; } else if (N % 2 != M % 2) { if (N % 2 ? N * 2 <= M + 4 : M * 2 <= N + 4) { if (N % 2) { h = 2, w = 0; } else { h = 0, w = 2; } } else { if (N % 2) { h = 1, w = 2; } else { h = 2, w = 1; } } } else { if (min(N, M) * 2 <= max(N, M) + 6) { if (N > M) { h = 0, w = 3; } else { h = 3, w = 0; } } else { h = w = 2; } } vector<string> A = build(N - h, M - w, h, w); cout << N + M - w - h << "\n"; for (int i = 0; i < N; i++, cout << "\n") { for (int j = 0; j < M; j++) { cout << (i < N - h && j < M - w ? A[i][j] : "-+"[i < N - h]); } } } } }
#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...