답안 #421659

# 제출 시각 아이디 문제 언어 결과 실행 시간 메모리
421659 2021-06-09T10:36:42 Z KoD Shortcut (IOI16_shortcut) C++17
0 / 100
1 ms 292 KB
#include <bits/stdc++.h>
#include "shortcut.h"

template <class T>
using Vec = std::vector<T>;
using ll = long long;

constexpr ll INF = std::numeric_limits<ll>::max() / 2;

template <class T>
void setmin(T& lhs, const T& rhs) {
    if (lhs > rhs) {
        lhs = rhs;
    }
}

template <class T>
void setmax(T& lhs, const T& rhs) {
    if (lhs < rhs) {
        lhs = rhs;
    }
}

ll find_shortcut(int n, Vec<int> l, Vec<int> d, int c) {
    Vec<ll> x(n);
    for (int i = 1; i < n; ++i) {
        x[i] = x[i - 1] + l[i - 1];
    }
    const auto check = [&](const ll threshold) -> bool {
        ll sum_min = -INF, sum_max = INF;
        ll dif_min = -INF, dif_max = INF;
        for (int i = 0; i < n; ++i) {
            if (d[i] > threshold) {
                return false;
            }
            for (int j = i + 1; j < n; ++j) {
                if (d[i] + d[j] + (x[j] - x[i]) > threshold) {
                    if (d[i] + d[j] + c > threshold) {
                        return false;
                    }
                    setmin(sum_max, (x[i] - d[i]) + (x[j] - d[j]) + threshold - c);
                    setmax(sum_min, (x[i] + d[i]) + (x[j] + d[j]) + c - threshold);
                    setmin(dif_max, -(x[i] + d[i]) + (x[j] - d[j]) + threshold - c);
                    setmax(dif_min, -(x[i] - d[i]) + (x[j] + d[j]) + c - threshold);
                }
            }
        }
        for (int i = 0; i < n; ++i) {
            for (int j = i + 1; j < n; ++j) {
                if (sum_min <= x[i] + x[j] and x[i] + x[j] <= sum_max and dif_min <= x[j] - x[i] and x[i] - x[j] <= dif_max) {
                    return true;
                }
            }
        }
        return false;
    };
    ll ok = INF, ng = 0;
    while (ok - ng > 1) {
        const auto md = (ok + ng) / 2;
        (check(md) ? ok : ng) = md;
    }
    return ok;
}
# 결과 실행 시간 메모리 Grader output
1 Correct 1 ms 204 KB n = 4, 80 is a correct answer
2 Correct 1 ms 204 KB n = 9, 110 is a correct answer
3 Correct 1 ms 204 KB n = 4, 21 is a correct answer
4 Correct 1 ms 204 KB n = 3, 4 is a correct answer
5 Correct 0 ms 204 KB n = 2, 62 is a correct answer
6 Correct 1 ms 288 KB n = 2, 3 is a correct answer
7 Correct 1 ms 204 KB n = 3, 29 is a correct answer
8 Correct 1 ms 292 KB n = 2, 3 is a correct answer
9 Correct 1 ms 204 KB n = 2, 3 is a correct answer
10 Correct 1 ms 292 KB n = 2, 2000000001 is a correct answer
11 Correct 0 ms 204 KB n = 2, 3000000000 is a correct answer
12 Correct 1 ms 204 KB n = 3, 3000000000 is a correct answer
13 Correct 1 ms 204 KB n = 3, 3000000000 is a correct answer
14 Correct 1 ms 204 KB n = 4, 3000000001 is a correct answer
15 Correct 0 ms 204 KB n = 4, 4000000000 is a correct answer
16 Correct 1 ms 284 KB n = 5, 4000000000 is a correct answer
17 Correct 1 ms 204 KB n = 10, 1000000343 is a correct answer
18 Correct 1 ms 204 KB n = 10, 3189 is a correct answer
19 Correct 1 ms 204 KB n = 10, 7000000000 is a correct answer
20 Correct 1 ms 288 KB n = 5, 12 is a correct answer
21 Correct 1 ms 204 KB n = 5, 25 is a correct answer
22 Correct 1 ms 204 KB n = 2, 122 is a correct answer
23 Correct 0 ms 292 KB n = 10, 117 is a correct answer
24 Incorrect 1 ms 204 KB n = 10, incorrect answer: jury 336 vs contestant 333
25 Halted 0 ms 0 KB -
# 결과 실행 시간 메모리 Grader output
1 Correct 1 ms 204 KB n = 4, 80 is a correct answer
2 Correct 1 ms 204 KB n = 9, 110 is a correct answer
3 Correct 1 ms 204 KB n = 4, 21 is a correct answer
4 Correct 1 ms 204 KB n = 3, 4 is a correct answer
5 Correct 0 ms 204 KB n = 2, 62 is a correct answer
6 Correct 1 ms 288 KB n = 2, 3 is a correct answer
7 Correct 1 ms 204 KB n = 3, 29 is a correct answer
8 Correct 1 ms 292 KB n = 2, 3 is a correct answer
9 Correct 1 ms 204 KB n = 2, 3 is a correct answer
10 Correct 1 ms 292 KB n = 2, 2000000001 is a correct answer
11 Correct 0 ms 204 KB n = 2, 3000000000 is a correct answer
12 Correct 1 ms 204 KB n = 3, 3000000000 is a correct answer
13 Correct 1 ms 204 KB n = 3, 3000000000 is a correct answer
14 Correct 1 ms 204 KB n = 4, 3000000001 is a correct answer
15 Correct 0 ms 204 KB n = 4, 4000000000 is a correct answer
16 Correct 1 ms 284 KB n = 5, 4000000000 is a correct answer
17 Correct 1 ms 204 KB n = 10, 1000000343 is a correct answer
18 Correct 1 ms 204 KB n = 10, 3189 is a correct answer
19 Correct 1 ms 204 KB n = 10, 7000000000 is a correct answer
20 Correct 1 ms 288 KB n = 5, 12 is a correct answer
21 Correct 1 ms 204 KB n = 5, 25 is a correct answer
22 Correct 1 ms 204 KB n = 2, 122 is a correct answer
23 Correct 0 ms 292 KB n = 10, 117 is a correct answer
24 Incorrect 1 ms 204 KB n = 10, incorrect answer: jury 336 vs contestant 333
25 Halted 0 ms 0 KB -
# 결과 실행 시간 메모리 Grader output
1 Correct 1 ms 204 KB n = 4, 80 is a correct answer
2 Correct 1 ms 204 KB n = 9, 110 is a correct answer
3 Correct 1 ms 204 KB n = 4, 21 is a correct answer
4 Correct 1 ms 204 KB n = 3, 4 is a correct answer
5 Correct 0 ms 204 KB n = 2, 62 is a correct answer
6 Correct 1 ms 288 KB n = 2, 3 is a correct answer
7 Correct 1 ms 204 KB n = 3, 29 is a correct answer
8 Correct 1 ms 292 KB n = 2, 3 is a correct answer
9 Correct 1 ms 204 KB n = 2, 3 is a correct answer
10 Correct 1 ms 292 KB n = 2, 2000000001 is a correct answer
11 Correct 0 ms 204 KB n = 2, 3000000000 is a correct answer
12 Correct 1 ms 204 KB n = 3, 3000000000 is a correct answer
13 Correct 1 ms 204 KB n = 3, 3000000000 is a correct answer
14 Correct 1 ms 204 KB n = 4, 3000000001 is a correct answer
15 Correct 0 ms 204 KB n = 4, 4000000000 is a correct answer
16 Correct 1 ms 284 KB n = 5, 4000000000 is a correct answer
17 Correct 1 ms 204 KB n = 10, 1000000343 is a correct answer
18 Correct 1 ms 204 KB n = 10, 3189 is a correct answer
19 Correct 1 ms 204 KB n = 10, 7000000000 is a correct answer
20 Correct 1 ms 288 KB n = 5, 12 is a correct answer
21 Correct 1 ms 204 KB n = 5, 25 is a correct answer
22 Correct 1 ms 204 KB n = 2, 122 is a correct answer
23 Correct 0 ms 292 KB n = 10, 117 is a correct answer
24 Incorrect 1 ms 204 KB n = 10, incorrect answer: jury 336 vs contestant 333
25 Halted 0 ms 0 KB -
# 결과 실행 시간 메모리 Grader output
1 Correct 1 ms 204 KB n = 4, 80 is a correct answer
2 Correct 1 ms 204 KB n = 9, 110 is a correct answer
3 Correct 1 ms 204 KB n = 4, 21 is a correct answer
4 Correct 1 ms 204 KB n = 3, 4 is a correct answer
5 Correct 0 ms 204 KB n = 2, 62 is a correct answer
6 Correct 1 ms 288 KB n = 2, 3 is a correct answer
7 Correct 1 ms 204 KB n = 3, 29 is a correct answer
8 Correct 1 ms 292 KB n = 2, 3 is a correct answer
9 Correct 1 ms 204 KB n = 2, 3 is a correct answer
10 Correct 1 ms 292 KB n = 2, 2000000001 is a correct answer
11 Correct 0 ms 204 KB n = 2, 3000000000 is a correct answer
12 Correct 1 ms 204 KB n = 3, 3000000000 is a correct answer
13 Correct 1 ms 204 KB n = 3, 3000000000 is a correct answer
14 Correct 1 ms 204 KB n = 4, 3000000001 is a correct answer
15 Correct 0 ms 204 KB n = 4, 4000000000 is a correct answer
16 Correct 1 ms 284 KB n = 5, 4000000000 is a correct answer
17 Correct 1 ms 204 KB n = 10, 1000000343 is a correct answer
18 Correct 1 ms 204 KB n = 10, 3189 is a correct answer
19 Correct 1 ms 204 KB n = 10, 7000000000 is a correct answer
20 Correct 1 ms 288 KB n = 5, 12 is a correct answer
21 Correct 1 ms 204 KB n = 5, 25 is a correct answer
22 Correct 1 ms 204 KB n = 2, 122 is a correct answer
23 Correct 0 ms 292 KB n = 10, 117 is a correct answer
24 Incorrect 1 ms 204 KB n = 10, incorrect answer: jury 336 vs contestant 333
25 Halted 0 ms 0 KB -
# 결과 실행 시간 메모리 Grader output
1 Correct 1 ms 204 KB n = 4, 80 is a correct answer
2 Correct 1 ms 204 KB n = 9, 110 is a correct answer
3 Correct 1 ms 204 KB n = 4, 21 is a correct answer
4 Correct 1 ms 204 KB n = 3, 4 is a correct answer
5 Correct 0 ms 204 KB n = 2, 62 is a correct answer
6 Correct 1 ms 288 KB n = 2, 3 is a correct answer
7 Correct 1 ms 204 KB n = 3, 29 is a correct answer
8 Correct 1 ms 292 KB n = 2, 3 is a correct answer
9 Correct 1 ms 204 KB n = 2, 3 is a correct answer
10 Correct 1 ms 292 KB n = 2, 2000000001 is a correct answer
11 Correct 0 ms 204 KB n = 2, 3000000000 is a correct answer
12 Correct 1 ms 204 KB n = 3, 3000000000 is a correct answer
13 Correct 1 ms 204 KB n = 3, 3000000000 is a correct answer
14 Correct 1 ms 204 KB n = 4, 3000000001 is a correct answer
15 Correct 0 ms 204 KB n = 4, 4000000000 is a correct answer
16 Correct 1 ms 284 KB n = 5, 4000000000 is a correct answer
17 Correct 1 ms 204 KB n = 10, 1000000343 is a correct answer
18 Correct 1 ms 204 KB n = 10, 3189 is a correct answer
19 Correct 1 ms 204 KB n = 10, 7000000000 is a correct answer
20 Correct 1 ms 288 KB n = 5, 12 is a correct answer
21 Correct 1 ms 204 KB n = 5, 25 is a correct answer
22 Correct 1 ms 204 KB n = 2, 122 is a correct answer
23 Correct 0 ms 292 KB n = 10, 117 is a correct answer
24 Incorrect 1 ms 204 KB n = 10, incorrect answer: jury 336 vs contestant 333
25 Halted 0 ms 0 KB -
# 결과 실행 시간 메모리 Grader output
1 Correct 1 ms 204 KB n = 4, 80 is a correct answer
2 Correct 1 ms 204 KB n = 9, 110 is a correct answer
3 Correct 1 ms 204 KB n = 4, 21 is a correct answer
4 Correct 1 ms 204 KB n = 3, 4 is a correct answer
5 Correct 0 ms 204 KB n = 2, 62 is a correct answer
6 Correct 1 ms 288 KB n = 2, 3 is a correct answer
7 Correct 1 ms 204 KB n = 3, 29 is a correct answer
8 Correct 1 ms 292 KB n = 2, 3 is a correct answer
9 Correct 1 ms 204 KB n = 2, 3 is a correct answer
10 Correct 1 ms 292 KB n = 2, 2000000001 is a correct answer
11 Correct 0 ms 204 KB n = 2, 3000000000 is a correct answer
12 Correct 1 ms 204 KB n = 3, 3000000000 is a correct answer
13 Correct 1 ms 204 KB n = 3, 3000000000 is a correct answer
14 Correct 1 ms 204 KB n = 4, 3000000001 is a correct answer
15 Correct 0 ms 204 KB n = 4, 4000000000 is a correct answer
16 Correct 1 ms 284 KB n = 5, 4000000000 is a correct answer
17 Correct 1 ms 204 KB n = 10, 1000000343 is a correct answer
18 Correct 1 ms 204 KB n = 10, 3189 is a correct answer
19 Correct 1 ms 204 KB n = 10, 7000000000 is a correct answer
20 Correct 1 ms 288 KB n = 5, 12 is a correct answer
21 Correct 1 ms 204 KB n = 5, 25 is a correct answer
22 Correct 1 ms 204 KB n = 2, 122 is a correct answer
23 Correct 0 ms 292 KB n = 10, 117 is a correct answer
24 Incorrect 1 ms 204 KB n = 10, incorrect answer: jury 336 vs contestant 333
25 Halted 0 ms 0 KB -
# 결과 실행 시간 메모리 Grader output
1 Correct 1 ms 204 KB n = 4, 80 is a correct answer
2 Correct 1 ms 204 KB n = 9, 110 is a correct answer
3 Correct 1 ms 204 KB n = 4, 21 is a correct answer
4 Correct 1 ms 204 KB n = 3, 4 is a correct answer
5 Correct 0 ms 204 KB n = 2, 62 is a correct answer
6 Correct 1 ms 288 KB n = 2, 3 is a correct answer
7 Correct 1 ms 204 KB n = 3, 29 is a correct answer
8 Correct 1 ms 292 KB n = 2, 3 is a correct answer
9 Correct 1 ms 204 KB n = 2, 3 is a correct answer
10 Correct 1 ms 292 KB n = 2, 2000000001 is a correct answer
11 Correct 0 ms 204 KB n = 2, 3000000000 is a correct answer
12 Correct 1 ms 204 KB n = 3, 3000000000 is a correct answer
13 Correct 1 ms 204 KB n = 3, 3000000000 is a correct answer
14 Correct 1 ms 204 KB n = 4, 3000000001 is a correct answer
15 Correct 0 ms 204 KB n = 4, 4000000000 is a correct answer
16 Correct 1 ms 284 KB n = 5, 4000000000 is a correct answer
17 Correct 1 ms 204 KB n = 10, 1000000343 is a correct answer
18 Correct 1 ms 204 KB n = 10, 3189 is a correct answer
19 Correct 1 ms 204 KB n = 10, 7000000000 is a correct answer
20 Correct 1 ms 288 KB n = 5, 12 is a correct answer
21 Correct 1 ms 204 KB n = 5, 25 is a correct answer
22 Correct 1 ms 204 KB n = 2, 122 is a correct answer
23 Correct 0 ms 292 KB n = 10, 117 is a correct answer
24 Incorrect 1 ms 204 KB n = 10, incorrect answer: jury 336 vs contestant 333
25 Halted 0 ms 0 KB -
# 결과 실행 시간 메모리 Grader output
1 Correct 1 ms 204 KB n = 4, 80 is a correct answer
2 Correct 1 ms 204 KB n = 9, 110 is a correct answer
3 Correct 1 ms 204 KB n = 4, 21 is a correct answer
4 Correct 1 ms 204 KB n = 3, 4 is a correct answer
5 Correct 0 ms 204 KB n = 2, 62 is a correct answer
6 Correct 1 ms 288 KB n = 2, 3 is a correct answer
7 Correct 1 ms 204 KB n = 3, 29 is a correct answer
8 Correct 1 ms 292 KB n = 2, 3 is a correct answer
9 Correct 1 ms 204 KB n = 2, 3 is a correct answer
10 Correct 1 ms 292 KB n = 2, 2000000001 is a correct answer
11 Correct 0 ms 204 KB n = 2, 3000000000 is a correct answer
12 Correct 1 ms 204 KB n = 3, 3000000000 is a correct answer
13 Correct 1 ms 204 KB n = 3, 3000000000 is a correct answer
14 Correct 1 ms 204 KB n = 4, 3000000001 is a correct answer
15 Correct 0 ms 204 KB n = 4, 4000000000 is a correct answer
16 Correct 1 ms 284 KB n = 5, 4000000000 is a correct answer
17 Correct 1 ms 204 KB n = 10, 1000000343 is a correct answer
18 Correct 1 ms 204 KB n = 10, 3189 is a correct answer
19 Correct 1 ms 204 KB n = 10, 7000000000 is a correct answer
20 Correct 1 ms 288 KB n = 5, 12 is a correct answer
21 Correct 1 ms 204 KB n = 5, 25 is a correct answer
22 Correct 1 ms 204 KB n = 2, 122 is a correct answer
23 Correct 0 ms 292 KB n = 10, 117 is a correct answer
24 Incorrect 1 ms 204 KB n = 10, incorrect answer: jury 336 vs contestant 333
25 Halted 0 ms 0 KB -