// #pragma GCC optimize("unroll-loops")
// #pragma GCC optimize("Ofast")
#include <bits/stdc++.h>
using namespace std;
#define speedup cin.tie(0)->sync_with_stdio(0)
#define bitcount(x) __builtin_popcount(x)
#define all(x) x.begin(),x.end()
#define Tp template<class T>
#define pb emplace_back
Tp using vc=vector<T>;
using ld=long double;
using ll=long long;
inline void solve() {
bool rev = 0;
int n, m; cin >> n >> m;
if(n < m) swap(n, m), rev = 1;
int res = 0;
vc<int> v(n), av(n);
auto gen = [&](auto&self, int id)->void{
if(id == n) { int ans = 0;
for(int i = 0; i < n; i++) {
int bit = bitcount(v[i]);
if(rev && (bit << 1) < m) ans++;
if(!rev && (bit << 1) > m) ans++;
}
for(int bit = 0; bit < m; bit++) {
int sum = 0;
for(int i = 0; i < n; i++)
if((v[i] >> bit) & 1) sum++;
if(rev && (sum << 1) > n) ans++;
if(!rev && (sum << 1) < n) ans++;
} if(res < ans) {
res = ans;
av = v;
} return;
} for(int mask = 0; mask < (1 << m); mask++) {
v[id] = mask;
self(self, id + 1);
}
}; gen(gen, 0);
cout << res << '\n';
if(rev) {
for(int i = 0; i < m; i++){
for(int j = 0; j < n; j++){
if((av[j] >> i) & 1) cout << "+";
else cout << "-";
}
cout << '\n';
}
} else {
for(int i = 0; i < n; i++){
for(int j = 0; j < m; j++){
if((av[i] >> j) & 1) cout << "+";
else cout << "-";
} cout << '\n';
}
}
}
signed main(){
speedup;
int t; cin >> t;
while(t--) solve();
}
# | Verdict | Execution time | Memory | Grader output |
---|
Fetching results... |
# | Verdict | Execution time | Memory | Grader output |
---|
Fetching results... |
# | Verdict | Execution time | Memory | Grader output |
---|
Fetching results... |
# | Verdict | Execution time | Memory | Grader output |
---|
Fetching results... |
# | Verdict | Execution time | Memory | Grader output |
---|
Fetching results... |
# | Verdict | Execution time | Memory | Grader output |
---|
Fetching results... |