#include <bits/stdc++.h>
#define int long long
using namespace std;
const int N=200007,M=200007;
int n,m,a[N],b[M],c[M];
int aa[N],ab[N],cnt;
int pos,mxa=-666,mxb=-666,ta,tb;
int lcnt[N];
void discrete(){
int nn=n+2*m;
sort(aa+1,aa+nn+1);
for(register int i=1;i<=nn;++i){
if(i==1||aa[i]!=aa[i-1]){
ab[++cnt]=aa[i];
}
}
}
inline int query(int x){
return lower_bound(ab+1,ab+cnt+1,x)-ab;
}
signed main(){
ios::sync_with_stdio(0),
cin.tie(0);
cin>>n;
for(register int i=1;i<=n;++i){
cin>>a[i];
aa[i]=a[i];
}
cin>>m;
for(register int i=1;i<=m;++i){
cin>>b[i];
aa[n+i]=b[i];
}
for(register int i=1;i<=m;++i){
cin>>c[i];
aa[n+m+i]=c[i];
}
discrete();
for(register int i=1;i<=n;++i){
++lcnt[query(a[i])];
}
for(register int i=1;i<=m;++i){
ta=lcnt[query(b[i])],
tb=lcnt[query(c[i])];
//cout<<i<<":"<<ta<<","<<tb<<endl;
if(ta>mxa){
mxa=ta,
mxb=tb;
pos=i;
}
else if(ta==mxa){
if(tb>mxb){
mxb=tb;
pos=i;
}
}
}
cout<<pos<<endl;
return 0;
}
/*
*/
就是离散化,感觉和题解没区别了