/*
بسم الله الرحمن الرحيم
Author:
(:Muhammad Aneeq:)
*/
#include <iostream>
#include <vector>
#include <set>
#include <algorithm>
#warning check the output
using namespace std;
#define int long long
int const N=1e5+10;
int s[N],f[N],dp[N];
int n,m;
inline void solve()
{
cin >> n >> m;
for (int i = 1;i <= n;i++)
cin >> s[i];
for (int i = 1;i <= m;i++)
cin >> f[i];
long long l = 0, r = 1e9, ans = -1;
vector<pair<int, char>> fr(n + 1), bfr(n + 1);
while(l <= r) {
long long mid = (l + r) / 2;
for (int i = 0;i <= n;i++)
dp[i] = 0, bfr[i] = { 0,'?' };
for (int i = 0;i < n;i++)
{
if (dp[i] > dp[i + 1])
{
dp[i + 1] = dp[i];
bfr[i + 1] = { i,'L' };
}
int lx = s[i + 1] - mid, rx = s[i + 1];
if (f[dp[i] + 1] >= lx && f[dp[i] + 1] <= rx)
{
int x = upper_bound(f + 1 + dp[i], f + 1 + m, rx) - f - 1;
if (dp[i + 1] < x) {
dp[i + 1] = x;
bfr[i + 1] = { i,'L' };
}
}
lx = s[i + 1], rx = s[i + 1] + mid;
if (f[dp[i] + 1] >= lx && f[dp[i] + 1] <= rx)
{
int x = upper_bound(f + 1 + dp[i], f + 1 + m, rx) - f - 1;
if (dp[i + 1] < x) {
dp[i + 1] = x;
bfr[i + 1] = { i,'R' };
}
}
if (i + 2 <= n) {
int llx = s[i + 2] - mid, rrx = s[i + 2];
if (llx < lx && (f[dp[i] + 1] >= lx && f[dp[i] + 1] <= rx) || (f[dp[i] + 1] >= llx && f[dp[i] + 1] <= rrx))
{
int x = upper_bound(f + 1 + dp[i], f + 1 + m, rx) - f - 1;
if (dp[i + 2] < x)
{
dp[i + 2] = x;
bfr[i + 2] = { i,'?' };
}
}
}
}
if (dp[n] == m)
{
r = mid - 1;
ans = mid;
swap(fr, bfr);
}
else l = mid + 1;
}
cout << ans << '\n';
if (ans == -1) return;
int x = n;
vector<char> answ(n + 1);
while (x > 0) {
if (fr[x].second == '?') {
answ[x] = 'L', answ[x - 1] = 'R';
x -= 2;
}
else {
answ[x] = fr[x].second;
x--;
}
}
for (int i = 1;i <= n;i++) cout << answ[i];
cout<<endl;
}
signed main()
{
ios_base::sync_with_stdio(false);cin.tie(NULL);cout.tie(NULL);
int t=1;
for (int i=1;i<=t;i++)
{
solve();
}
}
Compilation message (stderr)
Main.cpp:11:2: warning: #warning check the output [-Wcpp]
11 | #warning check the output
| ^~~~~~~
# | 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... |