#include<cstdio>
#include<algorithm>
#define in inline
#define re register
using namespace std;
in int read()
{
int s(0),b(0);char ch;
do{ch=getchar();if(ch=='-')b=1;}while(ch<'0'||ch>'9');
while(ch>='0'&&ch<='9') s=(s<<3)+(s<<1)+(ch^48),ch=getchar();
if(b) return -s;
return s;
}
int st[200100],mv[200100][2],a[600100],b[600100],n,m,cnt;//把a离散化存到b中
int sum[600100];//开个桶计数
in void lsh()
{
sort(a+1,a+cnt+1);
cnt=unique(a+1,a+cnt+1)-a;//unique函数去重后返回新数组末尾元素地址, 减去首元素地址得到新数组长度
for(re int i=1;i<=cnt;++i) b[i]=a[i];
}
in int fkey(int val)//二分按值查找离散化后的序号
{
return lower_bound(b+1,b+cnt+1,val)-b;
}
signed main()
{
n=read();
for(re int i=1;i<=n;++i) a[++cnt]=st[i]=read();
m=read();
for(re int i=1;i<=m;++i) a[++cnt]=mv[i][0]=read();
for(re int i=1;i<=m;++i) a[++cnt]=mv[i][1]=read();
lsh();
for(re int i=1;i<=n;++i) ++sum[fkey(st[i])];
int ans=1;
for(re int i=1;i<=m;++i)
{
if(sum[fkey(mv[i][0])]>sum[fkey(mv[ans][0])]) ans=i;
else if(sum[fkey(mv[i][0])]==sum[fkey(mv[ans][0])]&&sum[fkey(mv[i][1])]>sum[fkey(mv[ans][1])]) ans=i;
}
printf("%d\n",ans);
return 0;
}
最新评论