제출 #1268383

#제출 시각아이디문제언어결과실행 시간메모리
1268383GoBananas69Red-blue table (IZhO19_stones)C++20
0 / 100
2096 ms460 KiB
#include <iostream>
#include <vector>
using namespace std;

int calc(vector<char> &c, int n, int m) {
    int a = 0, b = 0;

    for (int r = 0; r < n; r++) {
        int plus = 0, minus = 0;
        for (int col = 0; col < m; col++) {
            if (c[r * m + col] == '+') plus++;
            else minus++;
        }
        if (plus > minus) a++;
    }

    for (int col = 0; col < m; col++) {
        int plus = 0, minus = 0;
        for (int r = 0; r < n; r++) {
            if (c[r * m + col] == '+') plus++;
            else minus++;
        }
        if (minus > plus) b++;
    }

    return a + b;
}

void _() {
    int n, m;
    cin >> n >> m;
    int tot = n * m;
    int t = 1 << tot;

    vector<char> grid(tot);
    int s, mx = 0;
    for (int mask = 0; mask < t; ++mask) {
        for (int j = 0; j < tot; ++j) {
            if ((mask >> j) & 1) grid[j] = '+';
            else grid[j] = '-';
        }
        int curr = calc(grid, n, m);
        if (curr > mx) {
            s = mask;
            mx = curr;
        }
    }
    cout << mx << '\n';
    for (int j = 0; j < tot; ++j) {
        if ((s >> j) & 1) grid[j] = '-';
        else grid[j] = '+';
    }
    for (int r = 0; r < n; ++r) {
        for (int c = 0; c < m; ++c) {
            cout << grid[r * m + c] << ' ';
        }
        cout << "\n";
    }
}

int main() {
    cin.tie(0)->sync_with_stdio(0);
    int tc;
    cin >> tc;
    while (tc--) {
        _();
    }
}
#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...