Submission #1156436

#TimeUsernameProblemLanguageResultExecution timeMemory
1156436RafiullahRed-blue table (IZhO19_stones)C++20
38 / 100
29 ms2632 KiB
#include<bits/stdc++.h> #include <ext/pb_ds/tree_policy.hpp> #include <ext/pb_ds/assoc_container.hpp> using namespace std; using namespace __gnu_pbds; const int N = 1e6 + 9; const int LG = 22; void solve(){ int n,m;cin >> n >> m; vector<string> ans1(n + 1,string(m + 1,'+')); for(int i = 1 ; i <= n/2+1 ; i ++){ int len = (m-1) / 2; for(int j = m ; j >= m - len + 1; j --) ans1[i][j] = '-'; } for(int i = n / 2 + (n % 2) ; i <= n ; i ++){ int len = (m - 1) / 2; for(int j = m - len ; j >= m - 2 * len + 1 ; j --) ans1[i][j] = '-'; } int ans = 0; for(int i = 1 ; i <= n ; i ++){ int b = 0; for(int j = 1 ; j <= m ; j ++) if(ans1[i][j]=='+')b++; else b--; if(b>0)ans++; } for(int i = 1 ; i <= m ; i ++){ int b = 0; for(int j = 1 ; j <= n ; j ++) if(ans1[j][i] == '-')b++; else b--; if(b>0)ans++; } vector<string> ans2(n + 1,string(m + 1,'-')); for(int j = 1 ; j <= (m / 2) + 1 ; j ++){ int len = (n - 1) / 2; for(int i = n ; i >= n - len + 1 ; i --) ans2[i][j] = '+'; } for(int j = (m / 2) + (m % 2) ; j <= m ; j ++){ int len = (n - 1) / 2; for(int i = n - len ; i >= n - 2 * len + 1 ; i --) ans2[i][j] = '+'; } int ans22 = 0; for(int i = 1 ; i <= n ; i ++){ int b = 0; for(int j = 1 ; j <= m ; j ++) if(ans2[i][j]=='+')b++; else b--; if(b>0)ans22++; } for(int i = 1 ; i <= m ; i ++){ int b = 0; for(int j = 1 ; j <= n ; j ++) if(ans2[j][i] == '-')b++; else b--; if(b>0)ans22++; } int F = max(n + (m - 1) / 2,m + (n - 1) / 2); if(max(ans,ans22)>=F){ cout << max(ans,ans22) << endl; if(ans > ans22){ for(int i = 1 ; i <= n ; i ++){ for(int j = 1 ; j <= m ; j ++) cout << ans1[i][j]; cout << endl; } } else{ for(int i = 1 ; i <= n ; i ++){ for(int j = 1 ; j <= m ; j ++) cout << ans2[i][j]; cout << endl; } } return; } if(n + (m - 1) / 2 >= m + (n - 1) / 2){ vector<string> a(n + 1,string(m+1,'+')); for(int i = 1 ; i <= n ; i ++) for(int j = 1 ; j <= (m - 1) / 2; j ++) a[i][j] = '-'; cout << F << endl; for(int i = 1 ; i <= n ; i ++){ for(int j = 1 ; j <= m ; j ++){ cout << a[i][j] ; } cout << endl; } } else{ vector<string> a(n + 1,string(m+1,'-')); for(int j = 1 ; j <= m ; j ++) for(int i = 1 ; i <= (n - 1) / 2; i ++) a[i][j] = '+'; cout << F << endl; for(int i = 1 ; i <= n ; i ++){ for(int j = 1 ; j <= m ; j ++){ cout << a[i][j] ; } cout << endl; } } } signed main(){ ios_base::sync_with_stdio(false);cin.tie(NULL);cout.tie(NULL); int t = 1; cin >> t; while(t --){ solve(); } }
#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...