Submission #1199951

#TimeUsernameProblemLanguageResultExecution timeMemory
1199951amanthabandPalembang Bridges (APIO15_bridge)C++20
22 / 100
67 ms4072 KiB
#include <cmath>
#include <iostream>
#include <vector>
#include <string>
#include <algorithm>

using namespace std;

using ll = long long;
ll mod = 1000000007;

ll modpow(ll a, ll b) {
    ll result = 1;
    a %= mod;
    while (b > 0) {
        if (b % 2 == 1)
            result = (result * a) % mod;
        a = (a * a) % mod;
        b /= 2;
    }
    return result;
}

int main() {
    ll k, n;
    cin >> k >> n;
    vector<ll> home;
    vector<ll> office;
    ll sum_distance = 0;

    if (k == 1) {
        for (ll z = 0; z < n; z++) {
            char p, q;
            ll s, t;
            cin >> p >> s >> q >> t;
            if (p == q) {
                sum_distance += llabs(s - t);
            } else {
                home.push_back(s);
                office.push_back(t);
            }
        }

        if (home.size() == 0) {
            cout << sum_distance << endl;
            return 0;
        }

        vector<ll> bridge_positions;
        for (ll i = 0; i < home.size(); i++) {
            bridge_positions.push_back(home[i]);
            bridge_positions.push_back(office[i]);
        }

        sort(bridge_positions.begin(), bridge_positions.end());
        ll pos = bridge_positions[bridge_positions.size() / 2];

        ll ans = sum_distance;
        for (ll i = 0; i < home.size(); i++) {
            ans += llabs(home[i] - pos) + llabs(office[i] - pos) + 1;
        }

        cout << ans << endl;
    }

    return 0;
}
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...