离散化
670C - Cinema
map就行 只是练练
#include <iostream>
#include <cstdio>
#include <cmath>
#include <algorithm>
#include <vector>
#include <map>
using namespace std ;
const int N = 1000010 ;
struct mov {
int voc, sub ;
} b[N] ;
int tot[N] ;
int n, m ;
int a[N] ;
vector <int> All ;
map <int, int> ref ;
void discrete() {
sort(All.begin(), All.end()) ;
int cnt = 0 ;
for (int i = 0; i < All.size(); i++) {
if (i == 0 || All[i] != All[i - 1]) {
ref[All[i]] = ++cnt ;
}
}
}
int ansa = 0, ansb = 0, ansid = 1 ;
int main() {
scanf("%d", &n) ;
for (int i = 1; i <= n; i++) {
scanf("%d", &a[i]) ;
All.push_back(a[i]) ;
}
scanf("%d", &m) ;
for (int i = 1; i <= m; i++) {
scanf("%d", &b[i].voc) ;
All.push_back(b[i].voc) ;
}
for (int i = 1; i <= m; i++) {
scanf("%d", &b[i].sub) ;
All.push_back(b[i].sub) ;
}
discrete() ;
for (int i = 1; i <= n; i++) tot[ref[a[i]]]++ ;
for (int i = 1; i <= m; i++) {
int A = tot[ref[b[i].voc]], B = tot[ref[b[i].sub]] ;
if (A > ansa) {
ansa = A; ansb = B; ansid = i ;
} else if (A == ansa && B > ansb) {
ansb = B ; ansid = i ;
}
}
printf("%d\n", ansid) ;
}

浙公网安备 33010602011771号