#include <bits/stdc++.h>
using namespace std;
using ll = long long;
int main() {
    ios::sync_with_stdio(false);
    cin.tie(nullptr);
    int N;
    if (!(cin >> N)) return 0;
    int M = 2 * N;
    vector<pair<ll,ll>> coins(M);
    for (int i = 0; i < M; ++i) cin >> coins[i].first >> coins[i].second;
    // przygotuj listę celów: (1,1),(1,2),(2,1),(2,2),...,(N,1),(N,2)
    vector<pair<int,int>> targets;
    targets.reserve(M);
    for (int x = 1; x <= N; ++x) {
        targets.emplace_back(x, 1);
        targets.emplace_back(x, 2);
    }
    ll ans = 0;
    // dla każdego celu wybierz najbliższy dostępny coin (brutalne przeszukanie)
    for (auto &t : targets) {
        int best_idx = -1;
        ll best_dist = (ll)9e18;
        for (int i = 0; i < (int)coins.size(); ++i) {
            ll d = llabs(coins[i].first - t.first) + llabs(coins[i].second - t.second);
            if (d < best_dist) {
                best_dist = d;
                best_idx = i;
            }
        }
        ans += best_dist;
        // usuń wykorzystany coin: zamień z ostatnim i pop_back (O(1))
        swap(coins[best_idx], coins.back());
        coins.pop_back();
    }
    cout << ans << "\n";
    return 0;
}
| # | Verdict | Execution time | Memory | Grader output | 
|---|
| Fetching results... | 
| # | Verdict | Execution time | Memory | Grader output | 
|---|
| Fetching results... | 
| # | Verdict | Execution time | Memory | Grader output | 
|---|
| Fetching results... |