Submission #1212421

#TimeUsernameProblemLanguageResultExecution timeMemory
1212421yanbSprinklers (CEOI24_sprinklers)C++20
100 / 100
67 ms3024 KiB
#include <bits/stdc++.h> #define int long long using namespace std; int n, m; string ans; vector<int> s, f; int update(int id, int l, int r) { while (id < m && l <= f[id] && f[id] <= r) { id++; } return id; } bool check(int x) { vector<int> dp(n + 1); vector<char> p(n + 1, 'L'); for (int i = 0; i < n; i++) { dp[i + 1] = dp[i]; int upl = update(dp[i], s[i] - x, s[i]); if (dp[i + 1] < upl) { dp[i + 1] = upl; p[i + 1] = 'L'; } int upr = update(dp[i], s[i], s[i] + x); if (dp[i + 1] < upr) { dp[i + 1] = upr; p[i + 1] = 'R'; } if (i > 0) { int uplr = update(dp[i - 1], s[i] - x, s[i - 1] + x); if (dp[i + 1] < uplr) { dp[i + 1] = uplr; p[i + 1] = 'B'; } } } int id = n; while (id) { if (p[id] == 'L') { ans[id - 1] = 'L'; id--; } else if (p[id] == 'R') { ans[id - 1] = 'R'; id--; } else { ans[id - 2] = 'R'; ans[id - 1] = 'L'; id -= 2; } } return dp[n] == m; } signed main() { ios_base::sync_with_stdio(0); cin.tie(0); cin >> n >> m; s.resize(n); f.resize(m); for (int i = 0; i < n; i++) cin >> s[i]; for (int i = 0; i < m; i++) cin >> f[i]; for (int i = 0; i < n; i++) ans += '_'; int l = -1, r = 1e10; while (r - l > 1) { int md = (r + l) / 2; if (check(md)) { r = md; } else { l = md; } } if (r == 1e10) { cout << "-1\n"; } else { check(r); cout << r << "\n" << ans << "\n"; } }
#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...