#include#include using namespace std; const int N = 2000010; int a[N],b[N],c[N],idx,f[N * 3];//原始数据总集 int silt[N * 3],idx2;//散列表最终集合 int en[N * 3];//对应每门语言专家的人数 int n,m; int find(int x)//查找离散化之后点的位置 { int l = 1,r = idx2; while(l < r) { int mid = l + r >> 1; if(silt[mid] >= x) r = mid; else l = mid + 1; } return r; } int main() { cin >> n; for(int i = 1;i <= n;i ++ )//读入科学家 { scanf("%d",&a[i]); f[++idx] = a[i]; } cin >> m; for (int i = 1;i <= m;i ++ )//读入语音 { scanf("%d",&b[i]); f[++idx] = b[i]; } for (int i = 1;i <= m;i ++ )//读入字幕 { scanf("%d",&c[i]); f[++idx] = c[i]; } sort(f + 1,f + 1 + idx);//排列散列表 for (int i = 1;i <= idx;i ++ )//去重 { if (i == 1 || f[i] != f[i - 1]) { silt[++idx2] = f[i]; } } //for (int i = 1;i <= idx2;i ++ )cout << silt[i] << ' ' ; for (int i = 1;i <= n;i ++ ) en[find(a[i])] ++; int ans = 0,x = 0 ,y = 0;//x与y分别记录 懂语言和懂字幕的 //for (int i = 1;i <= n;i ++ )cout << en[find(a[i])] << ' ' << find(i) << ' '; //cout << endl; for (int i = 1;i <= m;i ++ ) { int x1 = en[find(b[i])] , y1 = en[find(c[i])]; //cout << i << ' ' << x1 << ' ' << y1 << ' ' << x << ' ' << y << endl; if(x1 > x || (x1 == x && y1 > y)) { x = x1,y = y1; ans = i; } } if(ans == 0)cout << 1 << endl; else cout << ans << endl; }



