Submission #1114464

#TimeUsernameProblemLanguageResultExecution timeMemory
1114464dynam1cSprinklers (CEOI24_sprinklers)C++17
0 / 100
88 ms1844 KiB
#include <bits/stdc++.h> using namespace std; int main() { int n, m; cin >> n >> m; vector<int> s(n), f(m); for (int& e : s) cin >> e; for (int& e : f) cin >> e; vector<char> d(n); auto check = [&](int k) { d.assign(n, 0); vector<int> x(n+1); x[0] = -1; int j = 0; int li = -1, lj; for (int i = 0; i < n; i++) { if (s[i] <= x[i]) x[i+1] = s[i]+k, d[i] = 'R'; else if (f[j] < s[i]) { if (s[i]-f[j] > k) return false; x[i+1] = s[i], d[i] = 'L'; if (li >= 0 && s[i]-k <= f[lj]) { x[i+1] = s[li]+k; d[li] = 'R'; } li = i, lj = j; } else x[i+1] = s[i]+k, d[i] = 'R'; while (j < m && f[j] <= x[i+1]) j++; } if (j == m) for (char c : d) assert(c); return j == m; }; if (!check(1e9)) { cout << -1 << endl; return 0; } int l = -1, r = 1e9; while (r-l > 1) { int m = (l+r)/2; if (check(m)) r = m; else l = m; } cout << r << endl; for (char c : d) cout << c; 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...