제출 #1127841

#제출 시각아이디문제언어결과실행 시간메모리
1127841kirakosyanRed-blue table (IZhO19_stones)C++20
27 / 100
49 ms1348 KiB
#include<algorithm> #include<iostream> #include<vector> #include<string> #include<random> #include<cmath> #include<stack> #include<map> #include <iomanip> #include <queue> #include <set> using namespace std; using ll = long long; using ull = unsigned long long; ll mod = 1e9 + 7; ll pv(ll a, ll b) { if (b == 0)return 1; ll res = (pv(a, b / 2)); if (b % 2) { return (((res * res) % mod) * (a % mod)) % mod; } else { return (res * res) % mod; } } ll gcd(ll a, ll b) { while (b) { a %= b; swap(a, b); } return a; } void solve() { int n, m; cin >> n >> m; if(m<=4&&n<=4) { int mx = 0; vector<vector<int>>ansik; for (int p = 0; p < (1 << (n * m)); p++) { vector<vector<int>>v(n, vector<int>(m)); for (int j = 0; j < n * m; j++) { if (p & (1 << j)) { v[j / m][j % m]++; } } int ans = 0; for (int i = 0; i < n; i++) { int cnt = 0; for (int j = 0; j < m; j++) { if (v[i][j])cnt++; else cnt--; } if (cnt>=1)ans++; } for (int j = 0; j < m; j++) { int cnt = 0; for (int i = 0; i < n; i++) { if (v[i][j] == 0)cnt++; else cnt--; } if (cnt>=1)ans++; } if (ans > mx) { mx = ans; ansik = v; } } cout << mx << endl; for(int i=0; i<n; i++) { for(int j=0; j<m; j++) { if(ansik[i][j]) { cout<<"+"; } else cout<<"-"; } cout<<endl; } } else if(min(n,m)<=4) { if(n<=2) { cout<<m<<endl; for(int i=0; i<n; i++) { for(int i=0; i<m; i++) { cout<<'-'; } cout<<endl; } } else if(m<=2) { cout<<n<<endl; for(int i=0; i<n; i++) { for(int j=0; j<m; j++) { cout<<'+'; } cout<<endl; } } else if(min(m,n)==3||min(m,n)==4){ if(n<m) { cout<<m+1<<endl; for(int i=0; i<n-1; i++) { for(int i=0; i<m; i++)cout<<'-'; cout<<endl; } for(int i=0; i<m; i++)cout<<'+'; cout<<endl; } else { cout<<n+1<<endl; for(int i=0; i<n; i++) { if(m==3)cout<<"++-"<<endl; else if(m==4)cout<<"+++-"<<endl; } } } } else { if(m>=n) { cout<<m+(n+1)/2<<endl; for(int i=0; i<n/2; i++) { for(int j=0; j<m; j++) { cout<<'-'; } cout<<endl; } int ape=0; for(int i=0; i<(n)/2; i++) { for(int j=0;j<ape;j++){ cout<<'-'; } for(int j=0;j<(m+1)/2;j++){ cout<<'+'; } for(int j=ape+(m+1)/2; j<m; j++) { cout<<'-'; } cout<<endl; ape++; } cout<<'+'; for(int j=0;j<m/2;j++)cout<<'-'; for(int j=0;j<m/2;j++)cout<<'+'; cout<<endl; } else { swap(n,m); vector<vector<char>>v(n,vector<char>(m)); cout<<m+(n+1)/2<<endl; for(int i=0; i<n/2; i++) { for(int j=0; j<m; j++) { v[i][j]='-'; } } int ape=0; for(int i=n/2; i<n/2+n/2; i++) { for(int j=0;j<ape;j++){ v[i][j]='-'; } for(int j=ape;j<ape+(m+1)/2;j++){ v[i][j]='+'; } for(int j=ape+(m+1)/2; j<m; j++) { v[i][j]='-'; } ape++; } // cout<<'+'; v[n-1][0]='+'; for(int j=1;j<=m/2;j++)v[n-1][j]='-'; for(int j=m/2+1;j<m;j++)v[n-1][j]='+'; for(int j=0;j<m;j++){ for(int i=0;i<n;i++){ if(v[i][j]=='+')cout<<'-'; else cout<<'+'; } cout<<endl; } cout<<endl; } } } signed main() { ios_base::sync_with_stdio(false); cin.tie(NULL); ll _ = 1; cin >> _; while (_--) { 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...