Submission #1233665

#TimeUsernameProblemLanguageResultExecution timeMemory
1233665sophiaeternaliaSprinklers (CEOI24_sprinklers)C++20
20 / 100
2096 ms5020 KiB
#include <bits/stdc++.h>
using namespace std;
typedef long long ll;
#define int int64_t

int n, m;
vector<int> s, f;
string st;

int so(){
    /*if (st!="LLR"){
        return 1e18;
    }*/
    vector<pair<int, int>> je(m, {-1e18, 1e18});
    int a=-1e18, in=0;
    for (int i=0; i<m; i++){
        while (in!=n and s[in]<=f[i]){
            if (st[in]=='R'){
                a=s[in];
            }
            in++;
        }
        je[i].first=a;
        //cout<<a<<" "<<in<<"\n";
    }
    a=1e18;
    in=n-1;
    for (int i=m-1; i>=0; i--){
        while (in!=-1 and s[in]>=f[i]){
            if (st[in]=='L'){
                a=s[in];
            }
            in--;
        }
        je[i].second=a;
    }
    int ma=-1e18;
    for (int i=0; i<m; i++){
        int mi=1e18;
        if (je[i].first!=-1e18){
            mi=min(mi, f[i]-je[i].first);
        }
        if (je[i].second!=1e18){
            mi=min(mi, je[i].second-f[i]);
        }
        ma=max(ma, mi);
    }
    /*for (auto u: je){
        cout<<"--------------->   "<<u.first<<" "<<u.second<<"\n";
    }
    cout<<st<<" "<<ma<<"\n";*/
    return ma;
}

pair<int, string> e(int i){
    if (i==n){
        return {so(), st};
    }
    pair<int, string> a={1e18, ""};
    st.push_back('L');
    a=min(a, e(i+1));
    st[st.size()-1]='R';
    a=min(a, e(i+1));
    st.pop_back();
    return a;
}

signed main(){
    cin.tie(0); ios_base::sync_with_stdio(NULL);

    cin>>n>>m;
    s.resize(n);
    f.resize(m);
    for (int i=0; i<n; i++){
        cin>>s[i];
    }
    for (int i=0; i<m; i++){
        cin>>f[i];
    }
    pair<int, string> a=e(0);
    if (a.first==1e18){
        cout<<-1<<"\n";
        return 0;
    }
    cout<<a.first<<"\n"<<a.second<<"\n";
}
#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...