Submission #170763

#TimeUsernameProblemLanguageResultExecution timeMemory
170763DanGolovRed-blue table (IZhO19_stones)C++17
27 / 100
48 ms1524 KiB
#include <iostream>
#include <vector>

using namespace std;

namespace Solution {

    int n, m;
    char field[1013][1013];

    int countAns() {
        vector<int> rows (n, 0), columns (m, 0);
        for (int i = 0; i < n; i++) {
            for (int j = 0; j < m; j++) {
                if (field[i][j] == '+') {
                    rows[i]++, columns[j]++;
                } else {
                    rows[i]--, columns[j]--;
                }
            }
        }
        int res = 0;
        for (int i = 0; i < n; i++) {
            if (rows[i] > 0) ++res;
        }
        for (int i = 0; i < m; i++) {
            if (columns[i] < 0) ++res;
        }
        return res;
    }

    void solve() {
        cin >> n >> m;
        int ans = max(n + m / 2 - (m % 2 == 0), m + n / 2 - (n % 2 == 0));
        if (ans == n + m / 2 - (m % 2 == 0)) {
            for (int i = 0; i < n; i++) fill(field[i], field[i] + m, '+');
            for (int i = 0; i < m / 2 - (m % 2 == 0); i++) {
                for (int j = 0; j < n / 2 + 1; j++) {
                    field[(i + j) % n][i] = '-';
                }
            }
        } else {
            for (int i = 0; i < n; i++) fill(field[i], field[i] + m, '-');
            for (int i = 0; i < n / 2 - (n % 2 == 0); i++) {
                for (int j = 0; j < m / 2 + 1; j++) {
                    field[i][(i + j) % m] = '+';
                }
            }
        }
        cout << countAns() << '\n';
        for (int i = 0; i < n; i++) {
            for (int j = 0; j < m; j++) {
                cout << field[i][j];
            }
            cout << '\n';
        }
    }

}


int main() {
    int t;
    cin >> t;
    while (t--) {
        Solution::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...