rt,code如下:
#include<bits/stdc++.h>
#define int long long
using namespace std;
int n,ans,f[100100][5],g[100100][5];
struct data{
int x,y;
}a[100100];
signed main(){
cin>>n;
for(int i=1;i<=2*n;i++){
cin>>a[i].x>>a[i].y;
if(a[i].x<=0){
ans+=(1-a[i].x);
a[i].x=1;
}
if(a[i].x>n){
ans+=(a[i].x-n);
a[i].x=n;
}
if(a[i].y<=0){
ans+=(1-a[i].y);
a[i].y=1;
}
if(a[i].y>2){
ans+=(a[i].y-2);
a[i].y=2;
}
f[a[i].x][a[i].y]++;
}
for(int i=1;i<=n;i++){
g[i][1]=f[i][1]-1,g[i][2]=f[i][2]-1;
}
for(int i=1;i<n;i++){
if(g[i][1]>0&&g[i][2]>0){
g[i+1][1]+=g[i][1];
g[i+1][2]+=g[i][2];
ans+=(g[i][1]+g[i][2]);
}
if(g[i][1]>0&&g[i][2]==0){
g[i+1][1]+=g[i][1];
ans+=g[i][1];
}
if(g[i][1]>0&&g[i][2]<0){
int p=min(g[i][1],-g[i][2]);
g[i+1][1]+=(g[i][1]-p);
g[i+1][2]+=(g[i][2]+p);
ans+=(p+g[i][1]+g[i][2]);
}
if(g[i][1]==0&&g[i][2]>0){
g[i+1][2]+=g[i][2];
ans+=g[i][2];
}
if(g[i][1]==0&&g[i][2]<0){
g[i+1][2]+=g[i][2];
ans-=g[i][2];
}
if(g[i][1]<0&&g[i][2]>0){
int p=min(-g[i][1],g[i][2]);
g[i+1][1]+=(g[i][1]+p);
g[i+1][2]+=(g[i][2]-p);
ans+=(p+g[i][1]+g[i][2]);
}
if(g[i][1]<0&&g[i][2]==0){
g[i+1][1]+=g[i][1];
ans+=g[i][1];
}
if(g[i][1]<0&&g[i][2]<0){
g[i+1][1]+=g[i][1];
g[i+1][2]+=g[i][2];
ans-=(g[i][1]+g[i][2]);
}
}
cout<<ans;
return 0;
}