Submission #881053

#TimeUsernameProblemLanguageResultExecution timeMemory
881053dubabubaRed-blue table (IZhO19_stones)C++14
100 / 100
34 ms9308 KiB
#include <bits/stdc++.h> using namespace std; const int mxn = 1010; int a[mxn][mxn], n, m; int b[mxn][mxn]; int sus() { for(int i = 0; i < n; i++) for(int j = 0; j < m; j++) a[i][j] = 0; int mn_r = (m / 2) + 1, mx_b = m - mn_r; int mx_r = (n - 1) / 2, mn_b = n - mx_r; int i = 0, t = 0; if(mx_b != 0) for(int j = 0; j < m; j++) { if(n - i >= mn_b) { for(int cnt = 0; cnt < mn_b; cnt++, i++) { a[i][j] = 1; } continue; } if(t == mx_b - 1) break; t++; for(int cnt = 0; cnt < mn_b; cnt++, i++) { i %= n; a[i][j] = 1; } } int ans = 0; for(int i = 0; i < n; i++) { int sum = 0; for(int j = 0; j < m; j++) if(a[i][j] == 0) sum++; if(sum > m / 2) ans++; } for(int j = 0; j < m; j++) { int sum = 0; for(int i = 0; i < n; i++) if(a[i][j]) sum++; if(sum > n / 2) ans++; } return ans; } void go() { cin >> n >> m; int t1 = sus(); swap(n, m); int t2 = sus(); bool rev = true; if(t1 > t2) { swap(n, m); sus(); rev = false; } cout << max(t1, t2) << '\n'; if(rev) for(int i = 0; i < n; i++) for(int j = 0; j < m; j++) b[j][i] = 1 - a[i][j]; else for(int i = 0; i < n; i++) for(int j = 0; j < m; j++) b[i][j] = a[i][j]; if(rev) swap(n, m); for(int i = 0; i < n; i++) { for(int j = 0; j < m; j++) if(b[i][j]) cout << '-'; else cout << '+'; cout << '\n'; } } int main() { int T; cin >> T; while(T--) go(); 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...