Submission #1280852

#TimeUsernameProblemLanguageResultExecution timeMemory
1280852fatelessRed-blue table (IZhO19_stones)C++20
0 / 100
2096 ms340 KiB
// #pragma GCC optimize("unroll-loops")
// #pragma GCC optimize("Ofast")

#include <bits/stdc++.h> 
using namespace std;

#define speedup cin.tie(0)->sync_with_stdio(0)
#define bitcount(x) __builtin_popcount(x)
#define all(x) x.begin(),x.end()
#define Tp template<class T>
#define pb emplace_back
Tp using vc=vector<T>;
using ld=long double;
using ll=long long;

inline void solve() {
    int n, m; 
    cin >> n >> m;
    vc<int> mask(n, 0);

    int res = 0;
    vc<int> ansv(n, 0);
    auto gen = [&](auto& self, int i) -> void {
        if(i == n) {
            int ans = 0;
            for(int j = 0; j < n; j++)
                if(bitcount(mask[j]) >= (m >> 1) + (m & 1)) ans++;

            for(int bit = 0; bit < m; bit++) {
                int sum = 0;
                for(int j = 0; j < n; j++)
                    if((mask[j] >> bit) & 1) sum++;
                if(sum <= (n >> 1)) ans++;
            } if(res < ans) {
                res = ans;
                ansv = mask;
            }
            return;
        }

        for(int masks = 0; masks < (1 << m); masks++) {
            mask[i] = masks;
            self(self, i + 1);
        }

    }; gen(gen, 0);
    cout << res << '\n';
    for(int i = 0; i < n; i++){
        for(int j = 0; j < m; j++){
            if((ansv[i] >> j) & 1) cout << "+";
            else cout << "-";
        } cout << '\n';
    }
}

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