1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70
   | #include <bits/stdc++.h> using namespace std;
  typedef long long ll;
  template <typename _Tp> void read(_Tp &a, char c = 0) { 	for (c = getchar(); !isdigit(c); c = getchar()); 	for (a = 0; isdigit(c); a = a * 10 + c - '0', c = getchar()); }
  const int N = 2e5 + 5; const int M = 2e5 + 5;
  int n, m; int a[N], b[M], c[M]; int _a[N], tot; int e[N]; map<int, int> t; map<int, int> rt;
 
 
  class _data {   public: 	int idx, au, su; 	_data() {} 	_data(int _idx, int _au, int _su) : idx(_idx), au(_au), su(_su) {} 	bool operator < (const _data &o) const { 		return au ==  o.au ? su < o.su : au < o.au; 	} 	~_data() {} } q[M];
  int main() { #ifdef DEBUG 	freopen("C.in", "r", stdin); #endif 	read(n); 	for (int i = 1; i <= n; i++) { 		read(a[i]); 		_a[i] = a[i]; 	} 	sort(_a + 1, _a + n + 1); 	tot = unique(_a + 1, _a + n + 1) - (_a + 1); 	 	for (int i = 1; i <= tot; i++) { 		t[_a[i]] = i; 		rt[i] = _a[i]; 	} 	for (int i = 1; i <= n; i++) { 		a[i] = t[a[i]]; 		e[a[i]]++; 	} 	read(m); 	for (int i = 1; i <= m; i++) { 		read(b[i]); 		b[i] = t[b[i]]; 	} 	for (int i = 1; i <= m; i++) { 		read(c[i]); 		c[i] = t[c[i]]; 	} 	for (int i = 1; i <= m; i++) { 		q[i] = _data(i, e[b[i]], e[c[i]]); 	} 	sort(q + 1, q + m + 1); 	printf("%d\n", q[m].idx); 	return 0; }
   |