#15 16 19 20 22 23 24 27 28 TLE 剩下的AC
我寻思这才nlogn啊,咋T的啊
总不可能是快读爆了吧
#include <iostream>
#include <cstdio>
#include <cstring>
#include <cmath>
#include <algorithm>
#include <string>
#include <queue>
#define N 1000010
using namespace std;
typedef long long LL;
inline LL read()
{
LL xx=0,f=1;
char ch=getchar();
while(ch<'0'||ch>'9'){if(ch=='-') f=-1;ch=getchar();}
while(ch>='0'&&ch<='9'){xx=xx*10+ch-'0';ch=getchar();}
return xx*f;
}
void write(LL xx)
{
if(xx<0){xx=-xx;putchar('-');}
if(xx>9) write(xx/10);
putchar(xx%10+'0');
return;
}
LL n,goal[2][N],a[2][N],dic[N*2],wh[N*2],s[N],ans;
void End(){printf("dldsgay!!1\n");return;}
void msort(int l,int r)
{
if(l==r) return;
LL mid=(l+r)/2;
msort(1,mid);msort(mid+1,r);
LL i=l,j=mid+1,k=l;
while(i<=mid&&j<=r)
{
if(wh[i]<=wh[j]) s[k++]=wh[i++];
if(wh[i]>wh[j]) s[k++]=wh[j++],ans+=mid-i+1;
}
while(i<=mid) s[k++]=wh[i++];
while(j<=r) s[k++]=wh[j++];
for(int i0=l;i0<=r;i0++) wh[i0]=s[i0];
return;
}
void Start()
{
n=read();
for(int i=0;i<2;i++) for(int j=1;j<=n;j++){a[i][j]=read();wh[a[i][j]]=j;}
for(int i=0;i<2;i++) for(int j=1;j<=n;j++){goal[i][j]=read();dic[goal[i][j]]=j;}
for(int i=1;i<=n;i++)
{
int id=dic[a[0][i]];
int f=0,l=dic[a[0][i]]-wh[a[0][i]];
if(l<0) l=-l;
if(goal[0][id]!=a[0][i]&&goal[1][id]!=a[0][i]){End();return;}
if(goal[0][id]!=a[1][i]&&goal[1][id]!=a[1][i]){End();return;}
if(goal[0][dic[a[0][i]]]!=a[0][i]) f=1;
if(l%2!=f){End();return;}
}
for(int i=1;i<=n;i++) wh[i]=dic[a[0][i]];
msort(1,n);
write(ans);
return;
}
int main()
{
Start();
return 0;
}