Submission #788751

#TimeUsernameProblemLanguageResultExecution timeMemory
788751TheOpChickenRed-blue table (IZhO19_stones)C++17
17 / 100
54 ms1316 KiB
#include <bits/stdc++.h> using namespace std; bool possible(int i, int n, int m, int mid){ int total = (n-i)*mid + i*min(mid, m-(m/2+1)); return total >= mid*(n/2+1); } int find_can(int i, int n, int m){ int l = 0, r = m, ans = 0; while(l <= r){ int mid = (l+r)/2; if (!possible(i, n, m, mid)) r = mid-1; else{ ans = mid; l = mid+1; } } return ans; } int main(){ int t; cin >> t; while(t--){ int n, m; cin >> n >> m; int opt = 0, can = -1; for (int i = 0; i <= n; i++){ int new_can = find_can(i, n, m); if (new_can+i > opt+can) opt = i, can = new_can; } vector<int> count(m, 0); cout << can + opt << endl; for (int i = 0; i < n; i++){ int row_need = m/2 + 1; for (int j = 0; j < m; j++){ if (i >= opt) cout << '-'; else{ if (row_need == m - j || count[j] == n/2 + 1){ cout << '+'; row_need--; } else{ cout << '-'; count[j]++; } } } cout << endl; } } }
#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...