Submission #954630

#TimeUsernameProblemLanguageResultExecution timeMemory
954630atomRed-blue table (IZhO19_stones)C++17
27 / 100
51 ms464 KiB
#include "bits/stdc++.h" // @JASPER'S BOILERPLATE using namespace std; using ll = long long; #ifdef JASPER #include "debug.h" #else #define debug(...) 166 #endif signed main() { cin.tie(0) -> sync_with_stdio(0); #ifdef JASPER freopen("in1", "r", stdin); #endif int T; cin >> T; while (T--) { int n, m; cin >> n >> m; if (n <= 4 && m <= 4) { int sz = (n * m); int opt = -1; int ans = 0; for (int msk = 0; msk < (1 << sz); ++msk) { vector <vector <int>> a(n, vector <int> (m)); for (int i = 0; i < sz; ++i) { if (msk & (1 << i)) { int r = i / m; int c = i % m; a[r][c] = 1; } } int A = 0, B = 0; for (int i = 0; i < n; ++i) { int r = 0, b = 0; for (int j = 0; j < m; ++j) { if (a[i][j]) ++r; else ++b; } if (r > b) ++A; } for (int j = 0; j < m; ++j) { int r = 0, b = 0; for (int i = 0; i < n; ++i) { if (a[i][j]) ++r; else ++b; } if (b > r) ++B; } // debug(A, B, msk); if (A + B > ans) { ans = A + B; opt = msk; } } vector <vector <int>> a(n, vector <int> (m)); for (int i = 0; i < sz; ++i) { if (opt & (1 << i)) { int r = i / m; int c = i % m; a[r][c] = 1; } } cout << ans << "\n"; for (int i = 0; i < n; ++i) { for (int j = 0; j < m; ++j) { cout << (a[i][j]? "+" : "-"); } cout << "\n"; } continue; } // sub2 if (n <= 3 || m <= 3) { if (n <= 3) { if (n == 1) { cout << m << "\n"; for (int i = 1; i <= n; ++i) { for (int j = 1; j <= m; ++j) cout << "-"; cout << "\n"; } continue; } if (n == 2) { cout << m << "\n"; for (int i = 1; i <= n; ++i) { for (int j = 1; j <= m; ++j) cout << "-"; cout << "\n"; } continue; } // number of "+" rows = n / 2 - 1; if (n == 3) { cout << m + 1 << "\n"; for (int i = 1; i <= m; ++i) cout << "+"; cout << "\n"; for (int i = 2; i <= n; ++i) { for (int j = 1; j <= m; ++j) cout << "-"; cout << "\n"; } continue; } } if (m <= 3) { if (m == 1) { cout << n << "\n"; for (int i = 1; i <= n; ++i) cout << "+\n"; continue; } if (m == 2) { cout << n << "\n"; for (int i = 1; i <= n; ++i) cout << "++\n"; continue; } // number of "+" rows = n / 2 - 1; if (m == 3) { cout << n + 1 << "\n"; for (int i = 1; i <= n; ++i) cout << "-++\n"; continue; } } } } return 0; }
#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...