#include<bits/stdc++.h>
#define int long long
using namespace std;
inline bool getbit(int num, int bit)
{
return (num >> bit)&1;
}
string ansstr;
bool in_range(int x, int l, int r)
{
return l <= x && x <= r;
}
bool check(int x, vector<int> a, vector<int> b)
{
int n = a.size();
for(int i = 0; i < (1 << n); i++){
bool ok = 1;
for(int j : b){
bool curok = 0;
for(int k = 0; k < n; k++) if((getbit(i, k) == 0 && in_range(j, a[k]-x, a[k]) == 1) || (getbit(i, k) == 1 && in_range(j, a[k], a[k]+x) == 1)){
curok = 1; break;
}
if(curok == 0){ok = 0; break;}
}
if(ok == 1){
ansstr = "";
for(int j = 0; j < n; j++){
if(getbit(i, j) == 0) ansstr += "L";
else ansstr += "R";
}
return 1;
}
}
return 0;
}
signed main()
{
ios_base::sync_with_stdio(false);
cin.tie(0);
int n, m;
cin>>n>>m;
vector<int> a(n), b;
for(int i = 0; i < n; i++) cin>>a[i];
for(int i = 0; i < m; i++){
int x; cin>>x;
if((b.size() == 0 || b.back() != x) && (x > a.back() || *lower_bound(a.begin(), a.end(), x) != x)) b.push_back(x);
}
if(b.size() == 0){
cout<<0<<'\n';
for(int i = 1; i <= n; i++) cout<<"L";
return 0;
}
int l = 0, r = 1e9, ans = -1;
string str;
while(l <= r){
int mid = (l+r)/2;
if(check(mid, a, b) == 1){ans = mid; r = mid-1;}
else l = mid+1;
}
cout<<ans<<'\n';
if(ans > -1) cout<<ansstr;
}
# | Verdict | Execution time | Memory | Grader output |
---|
Fetching results... |
# | Verdict | Execution time | Memory | Grader output |
---|
Fetching results... |
# | Verdict | Execution time | Memory | Grader output |
---|
Fetching results... |
# | Verdict | Execution time | Memory | Grader output |
---|
Fetching results... |
# | Verdict | Execution time | Memory | Grader output |
---|
Fetching results... |
# | Verdict | Execution time | Memory | Grader output |
---|
Fetching results... |