Submission #1199945

#TimeUsernameProblemLanguageResultExecution timeMemory
1199945amanthabandPalembang Bridges (APIO15_bridge)C++20
0 / 100
1 ms328 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> median;
    vector<ll> home;
    vector<ll> ofiice;
    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 {
                int mid = (s + t) / 2;
                median.push_back(mid);
                home.push_back(s);
                ofiice.push_back(t);
            }
        }

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

        ll j = median.size();
        sort(median.begin(), median.end());
        ll sum = j / 2;
        ll pos = median[sum];
        ll ans = sum_distance;
        for (int i = 0; i < home.size(); i++) {
            ans += (llabs(home[i] - pos) + llabs(ofiice[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...