Submission #1140645

#TimeUsernameProblemLanguageResultExecution timeMemory
1140645hashimaliSprinklers (CEOI24_sprinklers)C++17
100 / 100
1030 ms4360 KiB
#include <bits/stdc++.h>
#define endl '\n'
#define ld long double
#define pb push_back
#define pf push_front
#define mod 998244353
#define se second
#define fi first
#define all(ls) (ls).begin(),(ls).end()
#define int long long
using namespace std;
int n,m,works;
const int N=1e5+10;
vector<int>s,f;
int par[N],d[N],dp[N];
pair<int,int>nxt(int x){
    return {lower_bound(all(f),x)-f.begin(),upper_bound(all(f),x)-f.begin()-1};
}
void work(int mid){
    works=0;
    dp[0]=0;
    for(int i=1;i<=n;i++){
        pair<int,int>a=nxt(s[i]-mid),b=nxt(s[i]),c=nxt(s[i]+mid);
        dp[i]=dp[i-1];
        par[i]=i-1;
        if((dp[i-1]+1)>=a.fi and dp[i]<b.se){
            d[i]=0;
            par[i]=i-1;
            dp[i]=b.se;
        }
        if((dp[i-1]+1)>=b.fi and dp[i]<c.se){
            d[i]=1;
            par[i]=i-1;
            dp[i]=c.se;
        }
        if(i>1){
            pair<int,int>D=nxt(s[i-1]+mid);
            if((dp[i-2]+1)>=a.fi and dp[i]<D.se){
                d[i]=1;
                par[i]=i-2;
                dp[i]=D.se;
            }
        }
    }
    works=(dp[n]==m);
}
void solve(){
    cin>>n>>m;
    s.resize(n+1,-1);
    f.resize(m+1,-1);
    for(int i=1;i<=n;i++)
        cin>>s[i];
    for(int i=1;i<=m;i++)
        cin>>f[i];
    int low=0,high=1e14,f=0;
    while(low<=high){
        int mid=(low+high)/2;
        work(mid);
        if(works){
            f=1;
            high=mid-1;
        }
        else
            low=mid+1;
    }
    if(f==0)
        low=-1;
    cout<<low<<endl;
    if(low!=-1){
        work(low);
        // for(int i=1;i<=n;i++)
        //     cout<<dp[i]<<" ";
        // cout<<endl;
        // for(int i=1;i<=n;i++)
        //     cout<<par[i]<<" ";
        // cout<<endl;
        int i=n;
        while(i>0){
            if(par[i]+2==i){
                d[i]=0;
                d[i-1]=1;
            }
            i=par[i];
        }
        for(int i=1;i<=n;i++){
            if(d[i]==0)
                cout<<'L';
            else
                cout<<'R'; 
        }
        cout<<endl;
    }
}
signed main(){
    ios_base::sync_with_stdio(0);
    cin.tie(0);
    cout.tie(0);
    int t=1;
    // cin>>t;
    for(int i=1;i<=t;i++){
        // cout<<"Scenario #"<<i<<":"<<" ";
        solve();
    }
}
#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...