제출 #1156259

#제출 시각아이디문제언어결과실행 시간메모리
1156259Ghulam_JunaidRed-blue table (IZhO19_stones)C++20
43 / 100
2096 ms1812 KiB
#include <bits/stdc++.h>
using namespace std;

void solve(){
    int n, m;
    cin >> n >> m;
    bool sw = 0;
    if (n < m) sw = 1, swap(n, m);

    vector<vector<char>> output(n), tmp(n);
    for (int i = 0; i < n; i ++)
        output[i].resize(m), tmp[i].resize(m);

    for (int i = 0; i < n; i ++)
        for (int j = 0; j < m; j ++)
            output[i][j] = '+';

    int ans = m - (m / 2 + 1);
    for (int c = m - (m / 2 + 1); c <= m; c ++){
        set<pair<int, int>> st;
        for (int i = 0; i < c; i ++)
            st.insert({n / 2 + 1, i});
        
        for (int i = 0; i < n; i ++)
            for (int j = 0; j < m; j ++)
                tmp[i][j] = '+';

        for (int i = 0; i < n; i ++){
            vector<pair<int, int>> vec;
            for (int j = 0; j < m - (m / 2 + 1); j ++){
                auto it = st.end();
                it--;
                vec.push_back({(*it).first - 1, (*it).second});
                tmp[i][(*it).second] = '-';
                st.erase(it);
            }
            for (auto x : vec)
                st.insert(x);
        }

        if (st.size() and (*st.rbegin()).first > 0) break;
        ans = c;
        output = tmp;
    }

    map<char, char> rev;
    rev['+'] = '-', rev['-'] = '+';

    cout << n + ans << endl;
    if (!sw){
        for (int i = 0; i < n; i ++){
            for (int j = 0; j < m; j ++)
                cout << output[i][j];
            cout << endl;
        }
    }
    else{
        for (int i = 0; i < m; i ++){
            for (int j = 0; j < n; j ++)
                cout << rev[output[j][i]];
            cout << endl;
        }
    }
}

int main(){
    int t;
    cin >> t;
    while (t--)
        solve();
    return 0;
}
#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...