#include <bits/stdc++.h>
using namespace std;
using ll = long long;
ll INF = 1e18;
ll n;
vector<pair<ll, ll>> s;
vector<vector<ll>> pref;
ll an(ll x, ll y) {
ll ans = 0;
pref.assign(2, vector<ll>(n, 0));
for (ll i = 0; i < s.size(); i++) {
if (s[i].first < x) {
if (s[i].second <= y) {
ans += abs(x - s[i].first) + abs(y - s[i].second);
pref[1][0]++;
continue;
} else {
ans += abs(x - s[i].first) + abs((y + 1) - s[i].second);
pref[0][0]++;
continue;
}
}
if (s[i].first > x + n - 1) {
if (s[i].second <= y) {
ans += abs((x + n - 1) - s[i].first) + abs(y - s[i].second);
pref[1][n - 1]++;
continue;
} else {
ans += abs((x + n - 1) - s[i].first) + abs((y + 1) - s[i].second);
pref[0][n - 1]++;
continue;
}
}
if (y + 1 <= s[i].second) {
ans += abs((y + 1) - s[i].second);
pref[0][s[i].first - x]++;
} else {
ans += abs((y) - s[i].second);
pref[1][s[i].first - x]++;
}
}
vector<pair<ll, ll>> d1, d2;
for (ll i = 0; i < 2; i++) {
for (ll j = 0; j < n; j++) {
for (ll e = 1; e < pref[i][j]; e++) {
d1.push_back({j, i});
}
}
}
for (ll i = 0; i < 2; i++) {
for (ll j = 0; j < n; j++) {
if (pref[i][j] == 0) {
d2.push_back({j, i});
}
}
}
if (d1.empty())return ans;
std::sort(d1.begin(), d1.end());
std::sort(d2.begin(), d2.end());
for (ll i = 0; i < d1.size(); i++) {
ans += abs(d1[i].first - d2[i].first) + abs(d1[i].second - d2[i].second);
}
return ans;
}
int main() {
ios::sync_with_stdio(false);
cin.tie(nullptr);
cout.tie(nullptr);
cin >> n;
s.assign(n * 2, {});
for (ll i = 0; i < n * 2; i++) {
cin >> s[i].first >> s[i].second;
}
cout << an(1, 1);
}
// 3
// 0 0
// 0 4
// 4 0
// 2 1
// 2 5
// -1 1
| # | Verdict | Execution time | Memory | Grader output |
|---|
| Fetching results... |
| # | Verdict | Execution time | Memory | Grader output |
|---|
| Fetching results... |
| # | Verdict | Execution time | Memory | Grader output |
|---|
| Fetching results... |