제출 #1280149

#제출 시각아이디문제언어결과실행 시간메모리
1280149khanhphucscratchSprinklers (CEOI24_sprinklers)C++20
20 / 100
2093 ms3596 KiB
#include<bits/stdc++.h>
#define int long long
using namespace std;
inline bool getbit(int num, int bit)
{
    return (num >> bit)&1;
}
string ansstr;
bool in_range(int x, int l, int r)
{
    return l <= x && x <= r;
}
bool check(int x, vector<int> a, vector<int> b)
{
    int n = a.size();
    for(int i = 0; i < (1 << n); i++){
        bool ok = 1;
        for(int j : b){
            bool curok = 0;
            for(int k = 0; k < n; k++) if((getbit(i, k) == 0 && in_range(j, a[k]-x, a[k]) == 1) || (getbit(i, k) == 1 && in_range(j, a[k], a[k]+x) == 1)){
                curok = 1; break;
            }
            if(curok == 0){ok = 0; break;}
        }
        if(ok == 1){
            ansstr = "";
            for(int j = 0; j < n; j++){
                if(getbit(i, j) == 0) ansstr += "L";
                else ansstr += "R";
            }
            return 1;
        }
    }
    return 0;
}
signed main()
{
    ios_base::sync_with_stdio(false);
    cin.tie(0);
    int n, m;
    cin>>n>>m;
    vector<int> a(n), b;
    for(int i = 0; i < n; i++) cin>>a[i];
    for(int i = 0; i < m; i++){
        int x; cin>>x;
        if((b.size() == 0 || b.back() != x) && (x > a.back() || *lower_bound(a.begin(), a.end(), x) != x)) b.push_back(x);
    }
    if(b.size() == 0){
        cout<<0<<'\n';
        for(int i = 1; i <= n; i++) cout<<"L";
        return 0;
    }
    int l = 0, r = 1e9, ans = -1;
    string str;
    while(l <= r){
        int mid = (l+r)/2;
        if(check(mid, a, b) == 1){ans = mid; r = mid-1;}
        else l = mid+1;
    }
    cout<<ans<<'\n';
    if(ans > -1) cout<<ansstr;
}


#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...