Submission #29810834


Source Code Expand

#include <bits/stdc++.h>

using std::vector;
using std::array;
using std::pair;
using std::tuple;

using ll = long long;

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

int main() {
    std::ios_base::sync_with_stdio(false);
    std::cin.tie(nullptr);
    int N, M;
    std::cin >> N >> M;
    vector<int> A(M), B(M), C(M);
    vector<vector<pair<int, ll>>> list(N);
    ll sum = 0;
    for (int i = 0; i < M; ++i) {
        std::cin >> A[i] >> B[i] >> C[i];
        A[i] -= 1, B[i] -= 1;
        if (A[i] > B[i]) std::swap(A[i], B[i]);
        list[A[i]].emplace_back(B[i], C[i]);
        sum += C[i];
    }
    vector<ll> memo(N);
    std::priority_queue<pair<int, ll>> heap;
    const auto solve = [&](const ll subt) {
        std::fill(memo.begin(), memo.end(), 0);
        heap = decltype(heap)();
        ll cur = 0, turn = 0;
        for (int i = 0; i < N; ++i) {
            cur += memo[i];
            for (const auto& [r, c] : list[i]) {
                cur += c;
                memo[r] -= c;
                heap.emplace(r, c);
            }
            const ll dif = cur - subt;
            ll need = (dif + 1) / 2;
            while (need > 0) {
                if (heap.empty() or heap.top().first <= i) return inf;
                const auto [r, c] = heap.top();
                heap.pop();
                const ll min = std::min(c, need);
                cur -= 2 * min;
                turn += min;
                memo[r] += 2 * min;
                if (min < c) heap.emplace(r, c - min);
                need -= min;
            }
        }
        return subt + turn;
    };
    ll ans = inf;
    for (const int parity : {0, 1}) {
        ll ok = sum + 1, ng = -1;
        while (ok - ng > 1) {
            const ll md = (ok + ng) / 2;
            const ll l = solve(parity + 2 * md);
            if (l == inf) {
                ng = md;
            } else {
                (l <= solve(parity + 2 * md + 2) ? ok : ng) = md;
            }
        }
        ans = std::min(ans, solve(parity + 2 * ok));
    }
    std::cout << ans << '\n';
    return 0;
}

Submission Info

Submission Time
Task D - 切符の手配 (Arranging Tickets)
User KoD
Language C++ (GCC 9.2.1)
Score 100
Code Size 2156 Byte
Status AC
Exec Time 2699 ms
Memory 17024 KiB

Judge Result

Set Name Subtask01 Subtask02 Subtask03 Subtask04 Subtask05
Score / Max Score 10 / 10 35 / 35 20 / 20 20 / 20 15 / 15
Status
AC × 15
AC × 27
AC × 39
AC × 51
AC × 62
Set Name Test Cases
Subtask01 01-01.txt, 01-02.txt, 01-03.txt, 01-04.txt, 01-05.txt, 01-06.txt, 01-07.txt, 01-08.txt, 01-09.txt, 01-10.txt, 01-11.txt, 01-12.txt, 01-13.txt, 01-14.txt, 01-15.txt, sample-01, sample-03
Subtask02 01-01.txt, 01-02.txt, 01-03.txt, 01-04.txt, 01-05.txt, 01-06.txt, 01-07.txt, 01-08.txt, 01-09.txt, 01-10.txt, 01-11.txt, 01-12.txt, 01-13.txt, 01-14.txt, 01-15.txt, 02-01.txt, 02-02.txt, 02-03.txt, 02-04.txt, 02-05.txt, 02-06.txt, 02-07.txt, 02-08.txt, 02-09.txt, 02-10.txt, 02-11.txt, 02-12.txt, sample-01, sample-03
Subtask03 01-01.txt, 01-02.txt, 01-03.txt, 01-04.txt, 01-05.txt, 01-06.txt, 01-07.txt, 01-08.txt, 01-09.txt, 01-10.txt, 01-11.txt, 01-12.txt, 01-13.txt, 01-14.txt, 01-15.txt, 02-01.txt, 02-02.txt, 02-03.txt, 02-04.txt, 02-05.txt, 02-06.txt, 02-07.txt, 02-08.txt, 02-09.txt, 02-10.txt, 02-11.txt, 02-12.txt, 03-01.txt, 03-02.txt, 03-03.txt, 03-04.txt, 03-05.txt, 03-06.txt, 03-07.txt, 03-08.txt, 03-09.txt, 03-10.txt, 03-11.txt, 03-12.txt, sample-01, sample-03
Subtask04 01-01.txt, 01-02.txt, 01-03.txt, 01-04.txt, 01-05.txt, 01-06.txt, 01-07.txt, 01-08.txt, 01-09.txt, 01-10.txt, 01-11.txt, 01-12.txt, 01-13.txt, 01-14.txt, 01-15.txt, 02-01.txt, 02-02.txt, 02-03.txt, 02-04.txt, 02-05.txt, 02-06.txt, 02-07.txt, 02-08.txt, 02-09.txt, 02-10.txt, 02-11.txt, 02-12.txt, 03-01.txt, 03-02.txt, 03-03.txt, 03-04.txt, 03-05.txt, 03-06.txt, 03-07.txt, 03-08.txt, 03-09.txt, 03-10.txt, 03-11.txt, 03-12.txt, 04-01.txt, 04-02.txt, 04-03.txt, 04-04.txt, 04-05.txt, 04-06.txt, 04-07.txt, 04-08.txt, 04-09.txt, 04-10.txt, 04-11.txt, 04-12.txt, sample-01, sample-03
Subtask05 01-01.txt, 01-02.txt, 01-03.txt, 01-04.txt, 01-05.txt, 01-06.txt, 01-07.txt, 01-08.txt, 01-09.txt, 01-10.txt, 01-11.txt, 01-12.txt, 01-13.txt, 01-14.txt, 01-15.txt, 02-01.txt, 02-02.txt, 02-03.txt, 02-04.txt, 02-05.txt, 02-06.txt, 02-07.txt, 02-08.txt, 02-09.txt, 02-10.txt, 02-11.txt, 02-12.txt, 03-01.txt, 03-02.txt, 03-03.txt, 03-04.txt, 03-05.txt, 03-06.txt, 03-07.txt, 03-08.txt, 03-09.txt, 03-10.txt, 03-11.txt, 03-12.txt, 04-01.txt, 04-02.txt, 04-03.txt, 04-04.txt, 04-05.txt, 04-06.txt, 04-07.txt, 04-08.txt, 04-09.txt, 04-10.txt, 04-11.txt, 04-12.txt, 05-01.txt, 05-02.txt, 05-03.txt, 05-04.txt, 05-05.txt, 05-06.txt, 05-07.txt, 05-08.txt, sample-01.txt, sample-02.txt, sample-03.txt
Case Name Status Exec Time Memory
01-01.txt AC 6 ms 3488 KiB
01-02.txt AC 2 ms 3580 KiB
01-03.txt AC 2 ms 3544 KiB
01-04.txt AC 2 ms 3588 KiB
01-05.txt AC 2 ms 3552 KiB
01-06.txt AC 3 ms 3588 KiB
01-07.txt AC 2 ms 3428 KiB
01-08.txt AC 3 ms 3592 KiB
01-09.txt AC 2 ms 3628 KiB
01-10.txt AC 2 ms 3492 KiB
01-11.txt AC 4 ms 3592 KiB
01-12.txt AC 2 ms 3472 KiB
01-13.txt AC 6 ms 3544 KiB
01-14.txt AC 2 ms 3592 KiB
01-15.txt AC 2 ms 3492 KiB
02-01.txt AC 4 ms 3652 KiB
02-02.txt AC 3 ms 3620 KiB
02-03.txt AC 4 ms 3516 KiB
02-04.txt AC 3 ms 3656 KiB
02-05.txt AC 5 ms 3628 KiB
02-06.txt AC 3 ms 3472 KiB
02-07.txt AC 4 ms 3640 KiB
02-08.txt AC 3 ms 3536 KiB
02-09.txt AC 6 ms 3620 KiB
02-10.txt AC 4 ms 3664 KiB
02-11.txt AC 5 ms 3628 KiB
02-12.txt AC 3 ms 3516 KiB
03-01.txt AC 15 ms 3916 KiB
03-02.txt AC 15 ms 3904 KiB
03-03.txt AC 22 ms 3816 KiB
03-04.txt AC 18 ms 3940 KiB
03-05.txt AC 15 ms 3908 KiB
03-06.txt AC 15 ms 3904 KiB
03-07.txt AC 14 ms 3856 KiB
03-08.txt AC 12 ms 3788 KiB
03-09.txt AC 15 ms 3896 KiB
03-10.txt AC 13 ms 3916 KiB
03-11.txt AC 11 ms 3880 KiB
03-12.txt AC 12 ms 3824 KiB
04-01.txt AC 634 ms 17024 KiB
04-02.txt AC 671 ms 17008 KiB
04-03.txt AC 619 ms 16820 KiB
04-04.txt AC 732 ms 16956 KiB
04-05.txt AC 762 ms 16976 KiB
04-06.txt AC 679 ms 16816 KiB
04-07.txt AC 625 ms 16280 KiB
04-08.txt AC 606 ms 16320 KiB
04-09.txt AC 576 ms 16312 KiB
04-10.txt AC 461 ms 13752 KiB
04-11.txt AC 377 ms 14180 KiB
04-12.txt AC 471 ms 13760 KiB
05-01.txt AC 2699 ms 16976 KiB
05-02.txt AC 2460 ms 16884 KiB
05-03.txt AC 2576 ms 16864 KiB
05-04.txt AC 2392 ms 16876 KiB
05-05.txt AC 2185 ms 16880 KiB
05-06.txt AC 2385 ms 16304 KiB
05-07.txt AC 2475 ms 16308 KiB
05-08.txt AC 1275 ms 13784 KiB
sample-01.txt AC 4 ms 3540 KiB
sample-02.txt AC 2 ms 3492 KiB
sample-03.txt AC 2 ms 3492 KiB