제출 #339519

#제출 시각아이디문제언어결과실행 시간메모리
339519tengiz05Red-blue table (IZhO19_stones)C++17
100 / 100
48 ms2284 KiB
#include <bits/stdc++.h> typedef long long ll; using namespace std; const int N = 1005; char ans[N][N]; void Solve(){ int n, m; cin >> n >> m; bool bad = false; if(n > m){ swap(n, m); bad = true; } int i, j; int res; if(n <= 2){ for(i=0;i<n;i++) for(j=0;j<m;j++)ans[i][j] = '-'; res = m; }else if(n <= 4){ for(i=0;i<(n+2)/2;i++) for(j=0;j<m;j++)ans[i][j] = '-'; for(i=(n+2)/2;i<n;i++) for(j=0;j<m;j++)ans[i][j] = '+'; res = m+((n-1)/2); }else { for(i=0;i<n;i++) for(j=0;j<m;j++)ans[i][j] = '-'; int have = 0; i=0; j=0; vector<int> cnt(m+1,0); int need = (m)/2+1; int toans = 0; while(true){ if(cnt[j] >= (n-1)/2)break; cnt[j]++; ans[i][j] = '+'; j++; if(j == m)j=0; have++; if(have == need)i++,have=0, toans++; }res = toans + m; } cout << res << '\n'; if(bad){ for(i=0;i<n;i++) for(j=0;j<m;j++) if(ans[i][j] == '+')ans[i][j] = '-'; else ans[i][j] = '+'; for(j=0;j<m;j++){ for(i=0;i<n;i++) cout << ans[i][j]; cout << '\n'; } }else { for(i=0;i<n;i++){ for(j=0;j<m;j++) cout << ans[i][j]; cout << '\n'; } } } signed main(){ int t; cin >> t; while(t--)Solve(); 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...