답안 #1069924

# 제출 시각 아이디 문제 언어 결과 실행 시간 메모리
1069924 2024-08-22T10:05:07 Z Alebn Sprinklers (CEOI24_sprinklers) C++14
3 / 100
2000 ms 5072 KB
#include <bits/stdc++.h>
#define int long long

using namespace std;

struct Obj {
    int t, pos, i;
    Obj(){}
    Obj(int ti, int pi, int ii):t(ti),pos(pi),i(ii){}
};
bitset<20> bs;
bool trywith(vector<Obj>& a, int& n, int k) {
    bool ok = false;
    for(int i = 0; i < (1 << n) && !ok; i++) {
        bitset<20> bit(i);
        int l = -1, r = 0, last = 0;
        for(int j = 0; j < a.size(); j++) {
            if(!a[j].t) {
                if(l == a[j].pos) l = -1;
                if(bit[a[j].i]) r = max(r, a[j].pos + k + 1);
                else {
                    if(a[j].pos - k <= l) l = -1;
                    r = a[j].pos + 1;
                }
            } else {
                last = max(last, a[j].pos);
                if(a[j].pos >= r && l == -1) l = a[j].pos; 
            }
        }
        if(l == -1 && (r > last)) {
            ok = true;
            bs = bit;
        }
    }
    return ok;
}

void solve() {
    int n, m, temp;
    cin >> n >> m;
    vector<Obj> a;
    for(int i = 0; i < n; i++) {
        cin >> temp;
        a.push_back(Obj(0, temp, i));
    }
    for(int i = 0; i < m; i++) {
        cin >> temp;
        a.push_back(Obj(1, temp, i));
    }
    sort(a.begin(), a.end(), [](Obj x, Obj y){
        if(x.pos == y.pos) return x.t > y.t;
        return x.pos < y.pos;
    });
    int l = 0, r = 1e9+1, mid, ans = -1;
    while(l <= r) {
        mid = (l + r) / 2;
        if(trywith(a, n, mid)) {
            r = mid - 1;
            ans = mid;
        } else l = mid + 1;
    }
    cout << ans << "\n";
    if(ans != -1) {
        for(int i = 0; i < n; i++) {
            if(bs[i]) cout << 'R';
            else cout << 'L';
        }
        cout << "\n";
    }
}

signed main() {
    ios_base::sync_with_stdio(false);
    cin.tie(NULL);
    solve();
}

Compilation message

Main.cpp: In function 'bool trywith(std::vector<Obj>&, long long int&, long long int)':
Main.cpp:17:26: warning: comparison of integer expressions of different signedness: 'long long int' and 'std::vector<Obj>::size_type' {aka 'long unsigned int'} [-Wsign-compare]
   17 |         for(int j = 0; j < a.size(); j++) {
      |                        ~~^~~~~~~~~~
# 결과 실행 시간 메모리 Grader output
1 Correct 0 ms 348 KB Correct
2 Correct 0 ms 348 KB Correct
# 결과 실행 시간 메모리 Grader output
1 Correct 0 ms 348 KB Correct
2 Correct 11 ms 3536 KB Correct
3 Correct 0 ms 348 KB Correct
4 Correct 14 ms 5072 KB Correct
5 Correct 15 ms 3532 KB Correct
6 Correct 0 ms 348 KB Correct
7 Correct 0 ms 348 KB Correct
8 Correct 3 ms 1112 KB Correct
9 Correct 1 ms 344 KB Correct
# 결과 실행 시간 메모리 Grader output
1 Correct 0 ms 348 KB Correct
2 Incorrect 388 ms 3480 KB User solution is worse than jury's solution
3 Halted 0 ms 0 KB -
# 결과 실행 시간 메모리 Grader output
1 Correct 0 ms 348 KB Correct
2 Correct 0 ms 348 KB Correct
3 Correct 11 ms 344 KB Correct
4 Correct 1 ms 476 KB Correct
5 Incorrect 45 ms 348 KB User solution is worse than jury's solution
6 Halted 0 ms 0 KB -
# 결과 실행 시간 메모리 Grader output
1 Correct 0 ms 348 KB Correct
2 Execution timed out 2085 ms 4560 KB Time limit exceeded
3 Halted 0 ms 0 KB -
# 결과 실행 시간 메모리 Grader output
1 Correct 0 ms 348 KB Correct
2 Correct 0 ms 348 KB Correct
3 Correct 11 ms 3536 KB Correct
4 Correct 0 ms 348 KB Correct
5 Correct 14 ms 5072 KB Correct
6 Correct 15 ms 3532 KB Correct
7 Correct 0 ms 348 KB Correct
8 Correct 0 ms 348 KB Correct
9 Correct 3 ms 1112 KB Correct
10 Correct 1 ms 344 KB Correct
11 Incorrect 388 ms 3480 KB User solution is worse than jury's solution
12 Halted 0 ms 0 KB -