제출 #598997

#제출 시각아이디문제언어결과실행 시간메모리
598997JomnoiRed-blue table (IZhO19_stones)C++17
17 / 100
28 ms1816 KiB
#include <bits/stdc++.h> using namespace std; const int MAX_N = 1005; int a[MAX_N][MAX_N], b[MAX_N][MAX_N]; void solve(int N, int M) { int ans = 0; if(N <= 4 and M <= 4) { for(int mask = 0; mask < (1<<(N * M)); mask++) { int sum = 0; for(int i = 0; i < N; i++) { for(int j = 0; j < M; j++) { if(mask & (1<<(i * M + j))) { a[i][j] = 1; } else { a[i][j] = 0; } } } for(int i = 0; i < N; i++) { int cnt1 = 0; for(int j = 0; j < M; j++) { cnt1 += a[i][j]; } sum += (cnt1 > M - cnt1); } for(int j = 0; j < M; j++) { int cnt1 = 0; for(int i = 0; i < N; i++) { cnt1 += a[i][j]; } sum += (N - cnt1 > cnt1); } if(ans < sum) { ans = sum; for(int i = 0; i < N; i++) { for(int j = 0; j < M; j++) { b[i][j] = a[i][j]; } } } } } else { if(N < M) { ans = M + N / 2; for(int i = 0; i < N; i++) { for(int j = 0; j < M; j++) { b[i][j] = 0; } } for(int i = 0; i < N / 2; i++) { for(int j = 0; j < M; j++) { b[i][j] = 1; } } } else { ans = N + M / 2; for(int i = 0; i < N; i++) { for(int j = 0; j < M; j++) { b[i][j] = 1; } } for(int j = 0; j < M / 2; j++) { for(int i = 0; i < N; i++) { b[i][j] = 0; } } } } cout << ans << '\n'; for(int i = 0; i < N; i++) { for(int j = 0; j < M; j++) { if(b[i][j] == 1) { cout << '+'; } else { cout << '-'; } } cout << '\n'; } } int main() { cin.tie(nullptr)->sync_with_stdio(false); int T; cin >> T; while(T--) { int N, M; cin >> N >> M; solve(N, M); } 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...