제출 #1156426

#제출 시각아이디문제언어결과실행 시간메모리
1156426RafiullahRed-blue table (IZhO19_stones)C++20
11 / 100
29 ms2632 KiB
#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++;
    }
    cout << max(ans,ans22) << '\n';
    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;
        }
    }
}
signed main(){
    ios_base::sync_with_stdio(false);cin.tie(NULL);cout.tie(NULL);
    int t = 1;
    cin >> t;
    while(t --){
        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...