Submission #173828

#TimeUsernameProblemLanguageResultExecution timeMemory
173828emil_physmathRed-blue table (IZhO19_stones)C++17
100 / 100
250 ms2476 KiB
#include <algorithm> #include <iostream> #include <vector> #include <string> using namespace std; void SwapMN(vector<string>& a) { int n = a.size(), m = a[0].length(); for (int i = 0; i < n; ++i) for (int j = 0; j < m; ++j) a[i][j] = (a[i][j] == '-' ? '+' : '-'); swap(n, m); vector<string> temp(n, string(m, '-')); for (int i = 0; i < n; ++i) for (int j = 0; j < m; ++j) temp[i][j] = a[j][i]; a.swap(temp); } int Value(const vector<string>& a) { int n = a.size(); int m = a[0].length(); int res = 0; for (int i = 0; i < n; ++i) if (2 * count(a[i].begin(), a[i].end(), '+') > m) ++res; for (int j = 0; j < m; ++j) { int cnt = 0; for (int i = 0; i < n; ++i) if (a[i][j] == '-') ++cnt; if (2 * cnt > n) ++res; } return res; } bool Solve(int n, int nx, int m, int mx, bool swapMN) { if (nx < 0 || mx < 0 || nx > n || mx > m) return false; if (swapMN) { swap(n, m); swap(nx, mx); } vector<string> a(n, string(m, '-')); for (int i = n - nx; i < n; ++i) for (int j = 0; j < m; ++j) a[i][j] = '-'; for (int i = 0; i < n; ++i) for (int j = m - mx; j < m; ++j) a[i][j] = '+'; int block = ((m + 2) / 2 - mx); int j = m - mx - 1; if (mx < m) for (int i = 0; i < n - nx; ++i) { for (int cnt = 0; cnt < block; ++cnt) a[i][(j - cnt + m - mx) % (m - mx)] = '+'; j = (j - block + m - mx) % (m - mx); } if (swapMN) { swap(n, m); swap(nx, mx); SwapMN(a); } int value = Value(a); if (value < n + m - nx - mx) return false; cout << value << '\n'; for (int i = 0; i < n; ++i) cout << a[i] << '\n'; cout << flush; return true; } int main() { ios::sync_with_stdio(false); cin.tie(nullptr); cout.tie(nullptr); int t; cin >> t; while (t--) { int n, m; cin >> n >> m; bool printed = false; for (int sum = 0; !printed && sum <= 4; ++sum) for (int i = 0; !printed && i <= 4; ++i) if (Solve(n, i, m, sum - i, false) || Solve(n, i, m, sum - i, true)) { printed = true; break; } } }
#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...