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; }
|