제출 #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...