제출 #796020

#제출 시각아이디문제언어결과실행 시간메모리
796020vjudge1Red-blue table (IZhO19_stones)C++17
100 / 100
26 ms9688 KiB
#include <bits/stdc++.h> using namespace std; int score(const vector<vector<int>> &a, int plus) { int tr = a[0].size()/2 + 1, tc = a.size()/2 + 1; int ret = 0; for (int i=0; i<(int)a.size(); i++) { int cnt = 0; for (int c : a[i]) cnt += (c == plus); ret += (cnt >= tr); } for (int j=0; j<(int)a[0].size(); j++) { int cnt = 0; for (int i=0; i<(int)a.size(); i++) { cnt += (a[i][j] != plus); } ret += (cnt >= tc); } return ret; } vector<vector<int>> transpose(const vector<vector<int>> &a) { int n = a.size(), m = a[0].size(); vector<vector<int>> ret(m, vector<int>(n)); for (int i=0; i<n; i++) { for (int j=0; j<m; j++) { ret[j][i] = a[i][j]; } } return ret; } vector<vector<int>> build(int n, int m, int plus) { int tr = m - (m/2 + 1), tc = n/2 + 1; vector<vector<int>> ret(n, vector<int>(m, plus)); for (int i=0, j=0, c=0; j<m && c<tr*n; j++) { for (int k=0; k<tc && c<tr*n; k++, i=(i+1 == n ? 0 : i+1), c++) { ret[i][j] = plus^1; } } return ret; } void solve() { int n, m; cin >> n >> m; auto ans1 = build(n, m, 0), ans2 = build(m, n, 1); int score1 = score(ans1, 0), score2 = score(ans2, 1); if (score2 > score1) { swap(score2, score1); ans1 = transpose(ans2); } cout << score1 << '\n'; for (int i=0; i<n; i++) { for (int j=0; j<m; j++) { cout << (ans1[i][j] ? '-' : '+'); } cout << '\n'; } } int main(){ ios_base::sync_with_stdio(0); cin.tie(0); int tcs; cin >> tcs; while (tcs--) { solve(); } 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...