Submission #487030

#TimeUsernameProblemLanguageResultExecution timeMemory
487030SirCovidThe19thRed-blue table (IZhO19_stones)C++17
100 / 100
52 ms5144 KiB
#include <bits/stdc++.h>
using namespace std;

void solve(){
    int n, m, flip = 0; cin >> n >> m; 
    if (n < m) swap(n, m), flip = 1;
    int ans[n + 1][m + 1] = {}, rowFill[n + 1] = {}, tot = n + m;

    for (int j = 1, i = 1; j <= m; j++){
        int cnt = 0;
        while (cnt < n - (n / 2 + 1)){
            ans[i][j] = 1; rowFill[i]++;
            i++; cnt++; if (i > n) i = 1;
        }
    }
    for (int j = 1; j <= m; j++){
        int badCol = 0;
        for (int i = 1; i <= n; i++)
            if (rowFill[i] < m / 2 + 1 and !ans[i][j]){
                ans[i][j] = 1; rowFill[i]++;
                badCol = 1;
            }
        tot -= badCol;
    }
    cout<<tot<<endl;
    if (flip) swap(n, m);
    for (int i = 1; i <= n; i++)
        for (int j = 1; j <= m; j++){
            int cur = !flip ? ans[i][j] : !ans[j][i];
            cout<<(cur ? "+" : "-")<<(j == m ? "\n" : "");
        }
}

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