답안 #1053151

# 제출 시각 아이디 문제 언어 결과 실행 시간 메모리
1053151 2024-08-11T09:13:35 Z elazarkoren Sprinklers (CEOI24_sprinklers) C++17
26 / 100
35 ms 2824 KB
#include <bits/stdc++.h>
#define x first
#define y second
#define all(v) v.begin(), v.end()
#define chkmin(a, b) a = min(a, b)
#define chkmax(a, b) a = max(a, b)
using namespace std;
typedef long long ll;
typedef vector<int> vi;
typedef vector<vi> vvi;
typedef pair<int, int> pii;
typedef vector<pii> vii;

const int MAX_N = 1e5 + 5;

ll s[MAX_N], f[MAX_N];
int ri[MAX_N];
int n, m;

bool Solve(int k) {
    int i = 0, j = 0;
    vi leftest(n);
    while (i < n && j < m) {
        if (f[j] >= s[i]) {
            leftest[i] = -1;
            while (j < m && f[j] - s[i] <= k) j++;
            ri[i] = 1;
            i++;
            continue;
        }
        if (s[i] - f[j] > k) return 0;
        ri[i] = 0;
        leftest[i] = j;
        if (i && leftest[i - 1] != -1 && s[i] - f[leftest[i - 1]] <= k) {
            while (j < m && f[j] - s[i - 1] <= k) j++;
            ri[i - 1] = 1;
        }
        while (j < m && f[j] <= s[i] && s[i] - f[j] <= k) j++;
        i++;
    }
    return j == m;
}

int Solve2(int k) {
    for (int i = 0; i < (1 << n); i++) {
        vii ranges;
        for (int j = 0; j < n; j++) {
            if ((i >> j) & 1) ranges.push_back({s[j], s[j] + k});
            else ranges.push_back({s[j] - k, s[j]});
        }
        sort(all(ranges));
        int a = 0, b = 0;
        while (a < n && b < m) {
            if (ranges[a].x <= f[b] && f[b] <= ranges[a].y) b++;
            else a++;
        }
        if (b == m) {
            return i + 1;
        }
    }
    return 0;
}

int Ans() {
    int begin = 0, end = 1e9 + 1;
    while (begin < end) {
        int mid = (begin + end) >> 1;
//        bool b1 = Solve(mid), b2 = Solve2(mid);
//        if (b1 != b2) {
//            cout << "BAD\n";
//            cout << n << ' ' << m << '\n';
//            for (int i = 0; i < n; i++) cout << s[i] << ' ';
//            cout << '\n';
//            for (int i = 0; i < m; i++) cout << f[i] << ' ';
//            exit(0);
//        }
        if (Solve(mid)) end = mid;
        else begin = mid + 1;
    }
    return end;
}

int main() {
    ios_base::sync_with_stdio(false);
    cin.tie(0);
    cin >> n >> m;
//    while (true) {
//        for (int i = 0; i < n; i++) {
//            s[i] = rand();
//        }
//        for (int i = 0; i < m; i++) {
//            f[i] = rand();
//        }
//        sort(s, s + n);
//        sort(f, f + m);
//        Ans();
//    }
    for (int i = 0; i < n; i++) cin >> s[i];
    for (int i = 0; i < m; i++) cin >> f[i];

    int end = Ans();
//    for (end = 0; end <= 8; end++) {
//        if (Solve(end)) break;
//    }
    int x = Solve(end);
    if (!x) {
        cout << -1 << '\n';
        return 0;
    }
//    cout << end << '\n';
//    x--;
//    for (int i = 0; i < n; i++) {
//        cout << ((x >> i) & 1 ? 'R' : 'L');
//    }
    cout << end << '\n';
    for (int i = 0; i < n; i++) {
        cout << (ri[i] ? 'R' : 'L');
    }
}
/*
3 5
6 14 25
0 13 19 21 28
 */
# 결과 실행 시간 메모리 Grader output
1 Correct 0 ms 344 KB Correct
2 Correct 0 ms 348 KB Correct
# 결과 실행 시간 메모리 Grader output
1 Correct 0 ms 348 KB Correct
2 Correct 6 ms 1116 KB Correct
3 Correct 0 ms 348 KB Correct
4 Correct 7 ms 1116 KB Correct
5 Correct 7 ms 1092 KB Correct
6 Correct 0 ms 348 KB Correct
7 Correct 0 ms 348 KB Correct
8 Correct 1 ms 628 KB Correct
9 Correct 0 ms 348 KB Correct
# 결과 실행 시간 메모리 Grader output
1 Correct 0 ms 344 KB Correct
2 Correct 8 ms 1264 KB Correct
3 Correct 2 ms 604 KB Correct
4 Correct 26 ms 2816 KB Correct
5 Correct 24 ms 2808 KB Correct
6 Correct 0 ms 344 KB Correct
7 Correct 0 ms 348 KB Correct
8 Correct 13 ms 2516 KB Correct
9 Correct 13 ms 2516 KB Correct
10 Correct 17 ms 2772 KB Correct
11 Correct 11 ms 2004 KB Correct
12 Correct 13 ms 1668 KB Correct
13 Correct 17 ms 2568 KB Correct
14 Correct 20 ms 2512 KB Correct
15 Correct 23 ms 2516 KB Correct
16 Correct 16 ms 2516 KB Correct
# 결과 실행 시간 메모리 Grader output
1 Correct 0 ms 344 KB Correct
2 Correct 0 ms 348 KB Correct
3 Correct 0 ms 348 KB Correct
4 Correct 0 ms 348 KB Correct
5 Correct 0 ms 348 KB Correct
6 Correct 0 ms 348 KB Correct
7 Correct 0 ms 600 KB Correct
8 Correct 0 ms 348 KB Correct
9 Correct 0 ms 344 KB Correct
10 Correct 1 ms 348 KB Correct
11 Correct 0 ms 348 KB Correct
12 Correct 0 ms 348 KB Correct
13 Correct 0 ms 348 KB Correct
14 Correct 0 ms 348 KB Correct
15 Correct 0 ms 348 KB Correct
16 Correct 0 ms 348 KB Correct
17 Correct 0 ms 348 KB Correct
18 Correct 0 ms 348 KB Correct
19 Correct 0 ms 348 KB Correct
20 Correct 0 ms 348 KB Correct
# 결과 실행 시간 메모리 Grader output
1 Correct 0 ms 344 KB Correct
2 Correct 10 ms 1372 KB Correct
3 Correct 33 ms 2772 KB Correct
4 Correct 35 ms 2772 KB Correct
5 Correct 34 ms 2772 KB Correct
6 Correct 33 ms 2768 KB Correct
7 Correct 34 ms 2768 KB Correct
8 Correct 33 ms 2772 KB Correct
9 Correct 33 ms 2824 KB Correct
10 Correct 33 ms 2768 KB Correct
11 Correct 35 ms 2768 KB Correct
12 Correct 0 ms 348 KB Correct
13 Correct 0 ms 348 KB Correct
14 Correct 11 ms 1948 KB Correct
15 Correct 13 ms 2004 KB Correct
16 Correct 11 ms 2040 KB Correct
17 Correct 10 ms 2768 KB Correct
18 Correct 12 ms 2772 KB Correct
19 Correct 16 ms 2772 KB Correct
20 Correct 28 ms 2768 KB Correct
21 Incorrect 29 ms 2768 KB User solution is incorrect
22 Halted 0 ms 0 KB -
# 결과 실행 시간 메모리 Grader output
1 Correct 0 ms 344 KB Correct
2 Correct 0 ms 348 KB Correct
3 Correct 6 ms 1116 KB Correct
4 Correct 0 ms 348 KB Correct
5 Correct 7 ms 1116 KB Correct
6 Correct 7 ms 1092 KB Correct
7 Correct 0 ms 348 KB Correct
8 Correct 0 ms 348 KB Correct
9 Correct 1 ms 628 KB Correct
10 Correct 0 ms 348 KB Correct
11 Correct 8 ms 1264 KB Correct
12 Correct 2 ms 604 KB Correct
13 Correct 26 ms 2816 KB Correct
14 Correct 24 ms 2808 KB Correct
15 Correct 0 ms 344 KB Correct
16 Correct 0 ms 348 KB Correct
17 Correct 13 ms 2516 KB Correct
18 Correct 13 ms 2516 KB Correct
19 Correct 17 ms 2772 KB Correct
20 Correct 11 ms 2004 KB Correct
21 Correct 13 ms 1668 KB Correct
22 Correct 17 ms 2568 KB Correct
23 Correct 20 ms 2512 KB Correct
24 Correct 23 ms 2516 KB Correct
25 Correct 16 ms 2516 KB Correct
26 Correct 0 ms 348 KB Correct
27 Correct 0 ms 348 KB Correct
28 Correct 0 ms 348 KB Correct
29 Correct 0 ms 348 KB Correct
30 Correct 0 ms 600 KB Correct
31 Correct 0 ms 348 KB Correct
32 Correct 0 ms 344 KB Correct
33 Correct 1 ms 348 KB Correct
34 Correct 0 ms 348 KB Correct
35 Correct 0 ms 348 KB Correct
36 Correct 0 ms 348 KB Correct
37 Correct 0 ms 348 KB Correct
38 Correct 0 ms 348 KB Correct
39 Correct 0 ms 348 KB Correct
40 Correct 0 ms 348 KB Correct
41 Correct 0 ms 348 KB Correct
42 Correct 0 ms 348 KB Correct
43 Correct 0 ms 348 KB Correct
44 Correct 10 ms 1372 KB Correct
45 Correct 33 ms 2772 KB Correct
46 Correct 35 ms 2772 KB Correct
47 Correct 34 ms 2772 KB Correct
48 Correct 33 ms 2768 KB Correct
49 Correct 34 ms 2768 KB Correct
50 Correct 33 ms 2772 KB Correct
51 Correct 33 ms 2824 KB Correct
52 Correct 33 ms 2768 KB Correct
53 Correct 35 ms 2768 KB Correct
54 Correct 0 ms 348 KB Correct
55 Correct 0 ms 348 KB Correct
56 Correct 11 ms 1948 KB Correct
57 Correct 13 ms 2004 KB Correct
58 Correct 11 ms 2040 KB Correct
59 Correct 10 ms 2768 KB Correct
60 Correct 12 ms 2772 KB Correct
61 Correct 16 ms 2772 KB Correct
62 Correct 28 ms 2768 KB Correct
63 Incorrect 29 ms 2768 KB User solution is incorrect
64 Halted 0 ms 0 KB -