#include<bits/stdc++.h>
using namespace std;
int INF = numeric_limits<int>::max()/2;
int main(){
int n,m;
cin >> n >> m;
vector<int> spr(n);
vector<int> flow(m);
for(int i = 0; i < n; i++){
cin >> spr[i];
}
for(int i = 0; i < m; i++){
cin >> flow[i];
}
int p2 = 1 << n;
int mi = INF;
vector<bool> best(n);
for(int t = 0; t < p2; t++){
// true => left
vector<bool> cur(n);
set<int> left, right;
for(int i = 0; i < n; i++){
if(t & (1 << i)){
cur[i] = true;
left.insert(spr[i]);
}else{
right.insert(spr[i]);
}
}
int cmax = 0;
for(int i = 0; i < m; i++){
auto lit = left.upper_bound(flow[i]);
auto rit = right.lower_bound(flow[i]);
int cmi = INF;
if(lit != left.begin()){
lit--;
cmi = min(flow[i]-(*lit),cmi);
}
if(rit != right.end()){
cmi = min((*rit)-flow[i],cmi);
}
cmax = max(cmi,cmax);
}
if(cmax < mi){
mi = cmax;
best = cur;
}
}
if(mi == INF){
cout << -1 << endl;
return 0;
}
cout << mi << endl;
for(int i = 0; i < n; i++){
cout << (best[i] ? "L" : "R");
}
cout <<endl;
}
# | 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... |