AcWing 103. 电影
原题链接
简单
作者:
Aleia
,
2024-10-08 21:31:43
,
所有人可见
,
阅读 1
#include <iostream>
#include <vector>
#include <algorithm>
using namespace std;
const int N = 2e5+10;
int a[N];
int b[N];
int c[N];
int sci[3*N];
vector<int> lan;
void discrete()//离散化 将数据元素离散化为下标表示
{
sort(lan.begin(),lan.end());
lan.erase(unique( lan.begin(),lan.end() ), lan.end());
}
int query(int x)//返回下标
{
return lower_bound(lan.begin(),lan.end(),x) - lan.begin();
}
int main()
{
int n,m;
cin>>n;
for(int i=1;i<=n;i++) cin>>a[i],lan.push_back(a[i]);
cin>>m;
for(int j = 1; j <= m; j++)
{
scanf("%d", &b[j]);
lan.push_back(b[j]);
}
for(int j = 1; j <= m; j++)
{
scanf("%d", &c[j]);
lan.push_back(c[j]);
}
discrete();
for(int i=1;i<=n;i++) sci[query(a[i])]++;//科学家
int res = 1,max_b =-1,max_c = -1;
for(int i=1;i<=m;i++)
{
int b1 = sci[query(b[i])], c1 = sci[query(c[i])];
if(b1 > max_b) max_b = b1, max_c= c1, res = i;
else if(b1 == max_b && c1 > max_c ) max_c = c1,res = i;
}
cout<<res<<endl;
return 0;
}