#include<iostream>
#include<cstdio>
#include<cstring>
#include<algorithm>
using namespace std;
int n,x,y,m;
struct pai{
int num,val,numm;
}ke[200001];
pai mov[200001],ans[200001];
int ton[200001];
int find(int x){
int l=0,r=n;
while(l<r){
int mid=(l+r)>>1;
if(ke[mid].val>=x)r=mid;
else l=mid+1;
}
if(ke[l].val==x) return ton[ke[l].num];
else return 0;
}
bool cmp(pai x,pai y){
return x.val<y.val;
}
bool cmp1(pai x,pai y){
if(x.num!=y.num) return x.num>y.num;
else if(x.val!=y.val) return x.val>y.val;
else return x.numm<y.numm;
}
int main(){
cin>>n;
for(int i=1;i<=n;i++){
cin>>ke[i].val;
ke[i].num=i;
}
sort(ke+1,ke+n+1,cmp);
for(int i=1;i<=n;i++){
if(ke[i-1].val!=ke[i].val) ton[i]++;
else{
ke[i].num=ke[i-1].num;
ton[ke[i].num]++;
}
}
cin>>m;
for(int i=1;i<=m;i++)cin>>mov[i].num;
for(int i=1;i<=m;i++){
cin>>mov[i].val;
mov[i].numm=i;
}
for(int i=1;i<=m;i++){
ans[i].num+=find(mov[i].num);
ans[i].val+=find(mov[i].val);
ans[i].numm=mov[i].numm;
}
sort(ans+1,ans+n+1,cmp1);
cout<<ans[1].numm;
}
结构体懒得开两个了,就是结构体和排序,看上去没问题啊