#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 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... |