#include<bits/stdc++.h>
using namespace std;
#define int long long
const int INF = 4e9;
int n,m;
int s[100005],f[100005];
char dir[100005];
map<int,int> mp;
bool verif(int k)
{
vector<bool> used(n+2,0);
int ps=1,pf=1;
while(ps<=n || pf<=m)
{
if(ps<=n && (pf>m || s[ps] < f[pf]))
{
if(!used[ps])
{
dir[ps] = 'R';
while(pf<=m && f[pf] <= s[ps] + k)
pf++;
}
ps++;
}
else
{
if(ps>n || f[pf] < s[ps] - k)
return 0;
int cur = ps;
while(cur+1<=n && f[pf] >= s[cur+1] - k)
cur++;
used[cur] = 1;
dir[cur] = 'L';
while(f[pf] <= s[cur])
pf++;
}
}
return 1;
}
signed main()
{
cin>>n>>m;
for(int i=1;i<=n;i++)
{
cin>>s[i];
mp[s[i]]++;
}
for(int i=1;i<=m;i++)
{
cin>>f[i];
if(mp[f[i]])
{
i--;
m--;
}
}
if(!verif(INF))
{
cout<<-1;
return 0;
}
int st=0,dr=INF,ans=INF;
while(st<=dr)
{
int mij=(st+dr)/2;
if(verif(mij))
{
ans = mij;
dr = mij-1;
}
else
st = mij+1;
}
verif(ans);
cout<<ans<<"\n";
for(int i=1;i<=n;i++)
cout<<dir[i];
return 0;
}
# | 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... |