제출 #1230783

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

#define ll long long
#define ld long double

void solve() {
    int N, M; cin >> N >> M;

    vector<vector<char>> A(N, vector<char>(M, '+'));

    bool rot = 0;
    if(N < M) {
        swap(N, M);
        rot = 1;
    }

    vector<int> cnt(N, M);

    bool can = 1;
    int r = 0, c = 0, answer = N;
    while(can) {
        int it = r;
        for(int i = 1; i <= N / 2 + 1; ++i) {
            cnt[it]--;
            it++; if(it >= N)it = 0;
        }
        it = r;
        for(int i = 1; i <= N / 2 + 1; ++i) {
            if(cnt[it] <= M / 2) {
                can = 0;
            }
            it++; if(it >= N)it = 0;
        }

        if(!can) {
            break;
        }

        answer++;

        for(int i = 1; i <= N / 2 + 1; ++i) {
            if(rot) {
                A[c][r] = '-';
            }
            else {
                A[r][c] = '-';
            }
            r++; if(r >= N)r = 0;
        }

        c++;
    }

    cout << answer << "\n";

    if(rot) {
        for(int i = 0; i < M; ++i) {
            for(int j = 0; j < N; ++j) {
                cout << (A[i][j] == '+' ? '-' : '+');
            }
            cout << "\n";
        }
        return;
    }

    for(int i = 0; i < N; ++i) {
        for(int j = 0; j < M; ++j) {
            cout << A[i][j];
        }
        cout << "\n";
    }
}

int main() {
    ios_base::sync_with_stdio(0); cin.tie(0); cout.tie(0);

    int tc = 1; cin >> tc;

    while(tc--) {
        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...