Submission #884903

#TimeUsernameProblemLanguageResultExecution timeMemory
884903TAFHRed-blue table (IZhO19_stones)C++17
42 / 100
27 ms1628 KiB
#include <bits/stdc++.h> #define SPEED ios::sync_with_stdio(false); cin.tie(0); cout.tie(0) #define mp make_pair #define mt make_tuple #define ull unsigned long long #define ll long long #define dl long double #define forn(i, n) for(int i = 0; i < n; i++) using namespace std; bool check(int k, int n, int m) { if (k == 0) return true; int d = n * k / (m - m / 2 - 1 + k); if (n * k % (m - m / 2 - 1 + k) != 0) d++; return d <= (n - n / 2 - 1); } int lol(int i, int n) { return i % n; } bool check_idx(int i, int l, int r) { if (l == r) return false; if (l < r) { return l <= i && i < r; } else { return i < r || l <= i; } } void start() { int n, m; cin >> n >> m; int k; int l = 0, r = max(n, m); while(l < r) { int mid = l + (r - l) / 2; if (check(mid, max(n, m), min(n, m)) && !check(mid + 1, max(n, m), min(n, m))) { k = mid; break; } if (check(mid, max(n, m), min(n, m))) { l = mid + 1; } else { r = mid; } } int d = 0; if (k != 0) { d = max(n, m) * k / (min(m, n) - min(m, n) / 2 - 1 + k); if (n * k % (m - m / 2 - 1 + k) != 0) d++; } char ans[n][m]; int cols[n + 1]; int rows[m + 1]; fill(cols, cols + n + 1, 0); fill(rows, rows + n + 1, 0); if (n > m) { int idx = 0; for(int j = 0; j < m; j++) { for(int i = 0; i < n; i++) { if (j < m / 2 + 1 - k) { ans[i][j] = '+'; } else { if (check_idx(i, idx, lol(idx + d, n))) { ans[i][j] = '+'; } else { ans[i][j] = '-'; } } } if (j >= m / 2 + 1 - k) idx = lol(idx + d, n); } } else { int idx = 0; for(int i = 0; i < n; i++) { for(int j = 0; j < m; j++) { if (i < n / 2 + 1 - k) { ans[i][j] = '-'; } else { if (check_idx(j, idx, lol(idx + d, m))) { ans[i][j] = '-'; } else { ans[i][j] = '+'; } } } if (i >= n / 2 + 1 - k) idx = lol(idx + d, m); } } cout << k + (min(n, m) - min(n, m) / 2 - 1) + max(n, m) << "\n"; for(int i = 0; i < n; i++) { for(int j = 0; j < m; j++) { cout << ans[i][j]; } cout << "\n"; } } int main() { //SPEED; int t = 1; cin >> t; while(t--) { start(); } }

Compilation message (stderr)

stones.cpp: In function 'void start()':
stones.cpp:57:15: warning: 'k' may be used uninitialized in this function [-Wmaybe-uninitialized]
   57 |         if (n * k % (m - m / 2 - 1 + k) != 0) d++;
      |             ~~^~~
#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...