Submission #1094397

#TimeUsernameProblemLanguageResultExecution timeMemory
1094397epicci23Sprinklers (CEOI24_sprinklers)C++17
9 / 100
59 ms5972 KiB
#include "bits/stdc++.h" #define int long long #define all(v) v.begin() , v.end() #define sz(a) (int)a.size() using namespace std; int n,m; vector<int> a,b; void _(){ cin >> n >> m; for(int i=0;i<n;i++){ int x; cin >> x; a.push_back(x); } for(int i=0;i<m;i++){ int x;cin >> x; b.push_back(x); } auto get = [&](int l,int r){ if(l>r) return -1LL; int it = upper_bound(all(b),r)-b.begin(); int it2 = lower_bound(all(b),l)-b.begin(); return it-it2; }; auto check = [&](int pow)->pair<bool,vector<char>>{ int p=0; vector<char> res(n,'L'); for(int i=0;i<m;){ int lol=-1; while(p<n && a[p]<=b[i]){ res[p]='R'; lol=max(lol,a[p]+pow); p++; } if(lol>=b[i]){ while(i<m && lol>=b[i]) i++; if(i==m) return {1,res}; continue; } if(i==m) return {1,res}; if(p==n) return {0,res}; vector<int> f; while(p<n && a[p]-pow<=b[i]) f.push_back(p++); if(sz(f)==0) return {0,res}; if(sz(f)==1){ while(i<m && b[i]<=a[f[0]]) i++; continue; } if(sz(f)>=3){ for(int j=0;j<sz(f);j++){ if(j==sz(f)-2) continue; res[f[j]]='R'; } while(i<m && b[i]<=a[f.back()]+pow) i++; if(i==m) return {1,res}; continue; } if(get(a[f[0]]+1,a[f[1]]-1)>0){ res[f[0]]='R'; while(i<m && b[i]<=max(f[1],a[0]+pow)) i++; } else{ res[f[1]]='R'; while(i<m && b[i]<=a[f.back()]+pow) i++; } } return {1,res}; }; int l=0,r=(int)1e10; while(l<r){ int m=(l+r)/2; if(check(m).first) r=m; else l=m+1; } if(r==(int)1e10) cout << -1 << '\n'; else{ auto X = check(l); cout << l << '\n'; for(char x:X.second) cout << x; cout << '\n'; } } int32_t main(){ cin.tie(0); ios::sync_with_stdio(0); int tc=1;//cin >> tc; while(tc--) _(); 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...