Submission #1290037

#TimeUsernameProblemLanguageResultExecution timeMemory
1290037loomSprinklers (CEOI24_sprinklers)C++20
100 / 100
460 ms9300 KiB
#include<bits/stdc++.h> using namespace std; #define int long long #define inf (int)2e18 #define nl '\n' void solve(){ int n, m; cin>>n>>m; int s[n+4]; s[0] = s[1] = s[2] = -inf; for(int i = 3; i < n+3; i++) cin>>s[i]; s[n+3] = inf; int f[m+1]; f[0] = -inf; for(int i = 1; i <= m; i++) cin>>f[i]; int dp[n+4][3]; pair<int,int> rec[n+4][3]; int k; for(int i : {0, 1, 2}){ dp[i][0] = dp[i][1] = 0; dp[i][2] = 1; } auto get = [&](int x){ int i = lower_bound(f+1, f+m+1, x) - f - 1; return f[i]; }; auto set = [&](int i, int x, int fi, int fj){ int p = get(x); auto &d = dp[fi][fj]; auto &r = rec[fi][fj]; if(dp[i][0] and p <= s[i] + k){ // R d = 1; r = {i, 0}; } else if(dp[i][1] and p <= s[i-1] + k){ // RL d = 1; r = {i, 1}; } else if(dp[i][2] and p <= s[i]){ // L d = 1; r = {i, 2}; } }; auto check = [&]{ for(int i = 3; i <= n+3; i++){ dp[i][0] = dp[i][1] = dp[i][2] = 0; // R set(i-1, s[i], i, 0); // RL if(get(s[i] - k) <= s[i-1] + k){ set(i-2, min(s[i-1], s[i] - k), i, 1); } // L set(i-1, s[i] - k, i, 2); } return dp[n+3][0]; }; int lo = 0, hi = 1e9; while(lo < hi){ k = (lo + hi)/2; if(check()) hi = k; else lo = k+1; } k = lo; if(!check()){ cout<<-1<<nl; return; } string ans; int i = n+3, j = 0; while(i >= 3){ auto [pi, pj] = rec[i][j]; if(j == 0) ans += "R"; if(j == 1) ans += "LR"; if(j == 2) ans += "L"; i = pi; j = pj; } reverse(ans.begin(), ans.end()); ans.pop_back(); cout<<lo<<nl<<ans; } signed main(){ ios_base::sync_with_stdio(0); cin.tie(NULL);cout.tie(NULL); int t = 1; //cin>>t; while(t--) solve(); return 0; }
#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...