제출 #1280858

#제출 시각아이디문제언어결과실행 시간메모리
1280858fatelessRed-blue table (IZhO19_stones)C++20
17 / 100
2095 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() {
    bool rev = 0; 
    int n, m; cin >> n >> m;
    if(n < m) swap(n, m), rev = 1;

    int res = 0;
    vc<int> v(n), av(n);
    auto gen = [&](auto&self, int id)->void{
        if(id == n) { int ans = 0;
            for(int i = 0; i < n; i++) {
                int bit = bitcount(v[i]);
                if(rev && (bit << 1) < m) ans++;
                if(!rev && (bit << 1) > m) ans++; 
            }
            for(int bit = 0; bit < m; bit++) {
                int sum = 0;
                for(int i = 0; i < n; i++)
                    if((v[i] >> bit) & 1) sum++;
                
                if(rev && (sum << 1) > n) ans++;
                if(!rev && (sum << 1) < n) ans++;
            } if(res < ans) {
                res = ans;
                av = v;
            } return;
        } for(int mask = 0; mask < (1 << m); mask++) {
            v[id] = mask;
            self(self, id + 1);
        }
    }; gen(gen, 0);
    cout << res << '\n';
    if(rev) {
        for(int i = 0; i < m; i++){
            for(int j = 0; j < n; j++){
                if((av[j] >> i) & 1) cout << "+";
                else cout << "-";
            }
            cout << '\n';
        }
    } else {
        for(int i = 0; i < n; i++){
            for(int j = 0; j < m; j++){
                if((av[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...