Submission #990494

#TimeUsernameProblemLanguageResultExecution timeMemory
990494tch1cherinRed-blue table (IZhO19_stones)C++17
53 / 100
21 ms1976 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) { 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 { 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 (min(N, M) * 2 <= max(N, M) + 4) { if (N % 2) { h = 2, w = 0; } else { h = 0, w = 2; } } else { h = 1, w = 2; } } else { if (min(N, M) * 2 <= max(N, M) + 6) { if (N > M) { h = 3, w = 0; } else { h = 0, w = 3; } } 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...