Submission #1053134

#TimeUsernameProblemLanguageResultExecution timeMemory
1053134elazarkorenSprinklers (CEOI24_sprinklers)C++17
20 / 100
2067 ms1548 KiB
#include <bits/stdc++.h> #define x first #define y second #define all(v) v.begin(), v.end() #define chkmin(a, b) a = min(a, b) #define chkmax(a, b) a = max(a, b) using namespace std; typedef long long ll; typedef vector<int> vi; typedef vector<vi> vvi; typedef pair<int, int> pii; typedef vector<pii> vii; const int MAX_N = 1e5 + 5; ll s[MAX_N], f[MAX_N]; int ri[MAX_N]; int n, m; bool Solve(int k) { int i = 0, j = 0; vi leftest(n); while (i < n && j < m) { if (f[j] >= s[i]) { leftest[i] = -1; while (j < m && f[j] - s[i] <= k) j++; ri[i] = 1; i++; continue; } if (s[i] - f[j] > k) return 0; ri[i] = 0; if (i && leftest[i - 1] != -1 && s[i] - f[leftest[i - 1]] <= k) { leftest[i] = leftest[i - 1]; while (j < m && f[j] - s[i - 1] <= k) j++; ri[i - 1] = 1; } else { leftest[i] = j; } while (j < m && f[j] <= s[i] && s[i] - f[j] <= k) j++; i++; } return j == m; } int Solve2(int k) { for (int i = 0; i < (1 << n); i++) { vii ranges; for (int j = 0; j < n; j++) { if ((i >> j) & 1) ranges.push_back({s[j], s[j] + k}); else ranges.push_back({s[j] - k, s[j]}); } sort(all(ranges)); int a = 0, b = 0; while (a < n && b < m) { if (ranges[a].x <= f[b] && f[b] <= ranges[a].y) b++; else a++; } if (b == m) { return i + 1; } } return 0; } int main() { ios_base::sync_with_stdio(false); cin.tie(0); cin >> n >> m; for (int i = 0; i < n; i++) cin >> s[i]; for (int i = 0; i < m; i++) cin >> f[i]; int begin = 0, end = 1e9 + 1; while (begin < end) { int mid = (begin + end) >> 1; if (Solve2(mid)) end = mid; else begin = mid + 1; } // int end; // for (end = 0; end <= 8; end++) { // if (Solve(end)) break; // } int x = Solve2(end); if (!x) { cout << -1 << '\n'; return 0; } cout << end << '\n'; x--; for (int i = 0; i < n; i++) { cout << ((x >> i) & 1 ? 'R' : 'L'); } // for (int i = 0; i < n; i++) { // cout << (ri[i] ? 'R' : 'L'); // } }
#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...