Submission #958323

# Submission time Handle Problem Language Result Execution time Memory
958323 2024-04-05T11:56:30 Z riariti Palembang Bridges (APIO15_bridge) C++17
31 / 100
2000 ms 7888 KB
#line 1 "Palembang_Bridges.cpp"
#include <bits/stdc++.h>

#ifdef local
#define dbg(__VA_ARGS__)                                                       \
    std::cerr << "[DBG|" << __LINE__ << "]: " << __VA_ARGS__ << std::endl;
#define cerr(__VA_ARGS__) std::cerr << __VA_ARGS__;
#else
#define dbg(...)
#define cerr(...)
#endif

void vec_out(const std::vector<int> &cc) {
    dbg("vector: ");
    for (auto x : cc) {
        cerr(x << " ");
    }
    cerr("\n");
}

int main() {
    std::ios::sync_with_stdio(false);
    std::cin.tie(nullptr);

    int K, N;
    std::cin >> K >> N;
    std::vector<std::tuple<char, std::int64_t, char, std::int64_t>> PSQT(N);
    for (auto &[P, S, Q, T] : PSQT) {
        std::cin >> P >> S >> Q >> T;
    }

    std::int64_t ans = 0;
    std::vector<std::pair<std::int64_t, std::int64_t>> HW;
    for (auto [P, S, Q, T] : PSQT) {
        if (P == Q) {
            ans += std::abs(T - S);
            continue;
        }

        HW.emplace_back(S, T);
    }

    auto calc = [&](int S, int T, int x) {
        return std::abs(S - x) + std::abs(T - x) + 1;
    };

    if (K == 1) {
        auto f = [&](int x) {
            std::int64_t ans = 0;
            for (auto [S, T] : HW) {
                ans += calc(S, T, x);
            }

            return ans;
        };

        std::int64_t l = 0, r = 1'000'000'001;
        while (l <= r) {
            auto m = l + (r - l) / 2;

            if (f(m) <= f(m + 1)) {
                r = m - 1;
            } else {
                l = m + 1;
            }
        }

        ans += f(l);

        std::cout << ans << "\n";

        return 0;
    }

    std::set<int> st;
    for (auto [P, S, Q, T] : PSQT) {
        st.insert(S);
        st.insert(T);
    }

    std::int64_t tan = LLONG_MAX;
    for (auto i : st) {
        for (auto j : st) {
            if (i == j) {
                continue;
            }

            std::int64_t res = 0;
            for (auto [H, W] : HW) {
                res += std::min(calc(H, W, i), calc(H, W, j));
            }

            tan = std::min(tan, res);
        }
    }

    ans += tan;

    std::cout << ans << "\n";

    return 0;
}

Compilation message

Palembang_Bridges.cpp: In function 'void vec_out(const std::vector<int>&)':
Palembang_Bridges.cpp:14:15: warning: unused variable 'x' [-Wunused-variable]
# Verdict Execution time Memory Grader output
1 Correct 0 ms 344 KB Output is correct
2 Correct 0 ms 348 KB Output is correct
3 Correct 1 ms 464 KB Output is correct
4 Correct 1 ms 348 KB Output is correct
5 Correct 1 ms 348 KB Output is correct
6 Correct 1 ms 348 KB Output is correct
7 Correct 1 ms 348 KB Output is correct
8 Correct 1 ms 348 KB Output is correct
9 Correct 1 ms 348 KB Output is correct
10 Correct 1 ms 604 KB Output is correct
11 Correct 1 ms 348 KB Output is correct
# Verdict Execution time Memory Grader output
1 Correct 0 ms 348 KB Output is correct
2 Correct 0 ms 348 KB Output is correct
3 Correct 0 ms 464 KB Output is correct
4 Correct 1 ms 348 KB Output is correct
5 Correct 1 ms 348 KB Output is correct
6 Correct 1 ms 348 KB Output is correct
7 Correct 1 ms 348 KB Output is correct
8 Correct 1 ms 344 KB Output is correct
9 Correct 1 ms 348 KB Output is correct
10 Correct 1 ms 348 KB Output is correct
11 Correct 1 ms 508 KB Output is correct
12 Correct 20 ms 6360 KB Output is correct
13 Correct 28 ms 7888 KB Output is correct
14 Correct 21 ms 6612 KB Output is correct
15 Correct 17 ms 4572 KB Output is correct
16 Correct 26 ms 7268 KB Output is correct
17 Correct 27 ms 7748 KB Output is correct
18 Correct 31 ms 7816 KB Output is correct
19 Correct 31 ms 7888 KB Output is correct
20 Correct 27 ms 7384 KB Output is correct
21 Correct 27 ms 7632 KB Output is correct
# Verdict Execution time Memory Grader output
1 Correct 0 ms 348 KB Output is correct
2 Correct 0 ms 348 KB Output is correct
3 Correct 0 ms 348 KB Output is correct
4 Correct 10 ms 484 KB Output is correct
5 Correct 3 ms 352 KB Output is correct
6 Correct 1 ms 452 KB Output is correct
7 Correct 0 ms 348 KB Output is correct
8 Correct 12 ms 472 KB Output is correct
9 Correct 15 ms 468 KB Output is correct
10 Correct 11 ms 348 KB Output is correct
11 Correct 0 ms 348 KB Output is correct
12 Correct 12 ms 472 KB Output is correct
# Verdict Execution time Memory Grader output
1 Correct 0 ms 344 KB Output is correct
2 Correct 1 ms 348 KB Output is correct
3 Correct 0 ms 348 KB Output is correct
4 Correct 10 ms 348 KB Output is correct
5 Correct 3 ms 348 KB Output is correct
6 Correct 1 ms 344 KB Output is correct
7 Correct 1 ms 600 KB Output is correct
8 Correct 12 ms 476 KB Output is correct
9 Correct 12 ms 348 KB Output is correct
10 Correct 11 ms 480 KB Output is correct
11 Correct 0 ms 348 KB Output is correct
12 Correct 12 ms 348 KB Output is correct
13 Correct 0 ms 348 KB Output is correct
14 Correct 27 ms 348 KB Output is correct
15 Execution timed out 2044 ms 604 KB Time limit exceeded
16 Halted 0 ms 0 KB -
# Verdict Execution time Memory Grader output
1 Correct 0 ms 348 KB Output is correct
2 Correct 0 ms 348 KB Output is correct
3 Correct 1 ms 348 KB Output is correct
4 Correct 10 ms 476 KB Output is correct
5 Correct 3 ms 460 KB Output is correct
6 Correct 0 ms 348 KB Output is correct
7 Correct 0 ms 348 KB Output is correct
8 Correct 13 ms 348 KB Output is correct
9 Correct 12 ms 600 KB Output is correct
10 Correct 11 ms 348 KB Output is correct
11 Correct 1 ms 348 KB Output is correct
12 Correct 13 ms 348 KB Output is correct
13 Correct 1 ms 348 KB Output is correct
14 Correct 27 ms 348 KB Output is correct
15 Execution timed out 2016 ms 600 KB Time limit exceeded
16 Halted 0 ms 0 KB -