#include <iostream>
#include <set>
#include <vector>
using namespace std;
char a[1005][1005];
int solve(int n, int m, int p = 0, int sw = 0){
set<pair<int,int>> s;
for (int i=0;i<n;i++)
s.insert({m, i});
for (int i=0;i<n;i++)
for (int j=0;j<m;j++)
a[i][j] = '+';
int Ans = n, d = n / 2 + 1;
for (int j=0;j<m;j++){
vector<pair<int,int>> vec;
for (int i=0;i<d;i++)
if (((*rbegin(s)).first - 1) * 2 > m)
vec.push_back(*rbegin(s)), s.erase(prev(end(s)));
if (vec.size() < d)
break;
Ans++;
for (auto [nm, i] : vec)
a[i][j] = '-', s.insert({nm - 1, i});
}
if (p == 0) return Ans;
cout<<Ans<<'\n';
if (sw){
for (int j=0;j<m;j++){
for (int i=0;i<n;i++)
a[i][j] = '+' + '-' - a[i][j], cout<<a[i][j];
cout<<'\n';
}
return Ans;
}
for (int i=0;i<n;i++){
for (int j=0;j<m;j++)
cout<<a[i][j];
cout<<'\n';
}
return Ans;
}
int main(){
int n, m, t;
cin>>t;
while (t--){
cin>>n>>m;
if (solve(n, m) > solve(m, n))
solve(n, m, 1, 0);
else
solve(m, n, 1, 1);
}
}
# | 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... |