Submission #1179050

#TimeUsernameProblemLanguageResultExecution timeMemory
1179050kl_2200100003Palembang Bridges (APIO15_bridge)C++17
Compilation error
0 ms0 KiB
#include <iostream>
#include <vector>
#include <algorithm>
#include <string>
#include <cmath>
using namespace std;

typedef long long ll;

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

    int K, N;
    cin >> K >> N;

    vector<ll> cross_needs;
    ll total = 0;

    for (int i = 0; i < N; ++i) {
        string a, b;
        cin >> a >> b;

        char P = a[0];
        ll S = stoll(a.substr(1));
        char Q = b[0];
        ll T = stoll(b.substr(1));

        if (P == Q) {
            total += abs(S - T);
        } else {
            cross_needs.push_back(S + T);
        }
    }

    if (cross_needs.empty() || K == 0) {
        total += cross_needs.size();
        cout << total << '\n';
        return 0;
    }

    sort(cross_needs.begin(), cross_needs.end());
    int M = cross_needs.size();

    if (K == 1) {
        ll median = cross_needs[M / 2];
        ll bridge_cost = 0;
        for (ll val : cross_needs) {
            bridge_cost += abs(val - median);
        }
        total += bridge_cost + M; // +1 per person crossing river
        cout << total << '\n';
        return 0;
    }

    // K == 2 case
    ll result = LLONG_MAX;

    for (int split = 0; split <= M; ++split) {
        ll left_cost = 0, right_cost = 0;

        if (split > 0) {
            ll median = cross_needs[split / 2];
            for (int i = 0; i < split; ++i) {
                left_cost += abs(cross_needs[i] - median);
            }
        }

        if (split < M) {
            int len = M - split;
            ll median = cross_needs[split + len / 2];
            for (int i = split; i < M; ++i) {
                right_cost += abs(cross_needs[i] - median);
            }
        }

        result = min(result, left_cost + right_cost);
    }

    total += result + M; // +1 per crossing citizen
    cout << total << '\n';
    return 0;
}

Compilation message (stderr)

bridge.cpp: In function 'int main()':
bridge.cpp:57:17: error: 'LLONG_MAX' was not declared in this scope
   57 |     ll result = LLONG_MAX;
      |                 ^~~~~~~~~
bridge.cpp:6:1: note: 'LLONG_MAX' is defined in header '<climits>'; did you forget to '#include <climits>'?
    5 | #include <cmath>
  +++ |+#include <climits>
    6 | using namespace std;