This submission is migrated from previous version of oj.uz, which used different machine for grading. This submission may have different result if resubmitted.
#include <bits/stdc++.h>
using namespace std;
typedef long long ll;
const int MX = 2e5 + 7;
ll N;
ll a[MX][3], b[MX];
ll ans = 0;
int main() {
cin.tie(0); ios_base::sync_with_stdio(0);
cin >> N;
for(int i = 0; i < 2 * N; i++) {
ll x, y;
cin >> x >> y;
if(1 <= x && x <= N && 1 <= y && y <= 2) {
a[x][y]++;
} else if(1 <= x && x <= N) {
if(y > 2) {
a[x][2]++;
ans += y - 2;
} else {
a[x][1]++;
ans += 1 - y;
}
} else if(1 <= y && y <= 2) {
if(x < 1) {
a[1][y]++;
ans += 1 - x;
} else {
a[N][y]++;
ans += x - N;
}
} else {
if(y > 2 && x < 1) {
a[1][2]++;
ans += 1 - x + y - 2;
} else if(y > 2 && x > N) {
a[N][2]++;
ans += x - N + y - 2;
} else if(y < 1 && x < 1) {
a[1][1]++;
ans += 1 - x + 1 - y;
} else {
a[N][1]++;
ans += x - N + 1 - y;
}
}
}
int sum1 = 0, sum2 = 0;
for(int i = 1; i <= N; i++) {
sum1 += a[i][1] - 1;
sum2 += a[i][2] - 1;
if(sum1 > 0 && sum2 < 0) {
int t = min(sum1, -sum2);
ans += t;
sum1 -= t;
sum2 += t;
}
if(sum1 < 0 && sum2 > 0) {
int t = min(-sum1, sum2);
ans += t;
sum1 += t;
sum2 -= t;
}
ans += abs(sum1) + abs(sum2);
}
// for(int i = 2; i >= 1; i--) {
// for(int j = 1; j <= N; j++) {
// cout << a[j][i] << " ";
// }
// cout << '\n';
// }
cout << ans << '\n';
}
# | Verdict | Execution time | Memory | Grader output |
---|
Fetching results... |
# | Verdict | Execution time | Memory | Grader output |
---|
Fetching results... |
# | Verdict | Execution time | Memory | Grader output |
---|
Fetching results... |