Moscow is hosting a major international conference, which is attended by n scientists from different countries. Each of the scientists knows exactly one language. For convenience, we enumerate all languages of the world with integers from 1 to 109.

In the evening after the conference, all n scientists decided to go to the cinema. There are m movies in the cinema they came to. Each of the movies is characterized by two distinct numbers — the index of audio language and the index of subtitles language. The scientist, who came to the movie, will be very pleased if he knows the audio language of the movie, will be almost satisfied if he knows the language of subtitles and will be not satisfied if he does not know neither one nor the other (note that the audio language and the subtitles language for each movie are always different).

Scientists decided to go together to the same movie. You have to help them choose the movie, such that the number of very pleased scientists is maximum possible. If there are several such movies, select among them one that will maximize the number of almost satisfied scientists.

Input

The first line of the input contains a positive integer n (1 ≤ n ≤ 200 000) — the number of scientists.

The second line contains n positive integers a1, a2, ..., an (1 ≤ ai ≤ 109), where ai is the index of a language, which the i-th scientist knows.

The third line contains a positive integer m (1 ≤ m ≤ 200 000) — the number of movies in the cinema.

The fourth line contains m positive integers b1, b2, ..., bm (1 ≤ bj ≤ 109), where bj is the index of the audio language of the j-th movie.

The fifth line contains m positive integers c1, c2, ..., cm (1 ≤ cj ≤ 109), where cj is the index of subtitles language of the j-th movie.

It is guaranteed that audio languages and subtitles language are different for each movie, that is bj ≠ cj.

Output

Print the single integer — the index of a movie to which scientists should go. After viewing this movie the number of very pleased scientists should be maximum possible. If in the cinema there are several such movies, you need to choose among them one, after viewing which there will be the maximum possible number of almost satisfied scientists.

If there are several possible answers print any of them.

Examples

Input
3
2 3 2
2
3 2
2 3
Output
2
Input
6
6 3 1 1 3 7
5
1 2 3 4 5
2 3 4 5 1
Output
1

Note

In the first sample, scientists must go to the movie with the index 2, as in such case the 1-th and the 3-rd scientists will be very pleased and the 2-nd scientist will be almost satisfied.

In the second test case scientists can go either to the movie with the index 1 or the index 3. After viewing any of these movies exactly two scientists will be very pleased and all the others will be not satisfied.

题意:有n个科学家,每个人都会一种语言,用整数a【i】表示,m部电影,每个电影用b【i】语言配音,用c【i】语言填字幕,

求一个电影,他被最多的人听懂,如果有多种方案,求此情况下,被最多人看懂的(a【i】 == c【i】就可以看懂)。

思路: 我们可以想到,把科学家会的语言计数,然后对电影先按b【i】数量后按c【i】数量排序。

计数的话,我们肯定要离散化,因为 0 <= i <= 2e5

1、我们可以用map,但是注意这题是卡了unordered_map的,直接用map或者hash_map都行

 include<bits/stdc++.h>
using namespace std; int n,m;
const int maxn = 2e5+;
int sc[maxn]; map<int,int>mp;
struct Mo
{
int b;
int c;
int id;
} mov[maxn]; bool cmp(Mo a,Mo b)
{
if(a.b == b.b)
return a.c > b.c;
return a.b > b.b;
}
int main()
{
scanf("%d",&n);
int tmp;
int cnt = ;
for(int i=; i<=n; i++)
{
scanf("%d",&tmp);
if(!mp[tmp])
{
mp[tmp] = ++cnt;
sc[cnt]++;
}
else
sc[mp[tmp]]++;
}
scanf("%d",&m);
for(int i=; i<=m; i++)
scanf("%d",&tmp),mov[i].id = i,mov[i].b = sc[mp[tmp]];
for(int i=; i<=m; i++)
scanf("%d",&tmp),mov[i].c = sc[mp[tmp]];
sort(mov+,mov++m,cmp);
printf("%d\n",mov[].id);
}

2、我们可以用二分离散,就是先排序a【i】,然后用unique或者手写去重,用二分查找a【i】在去重后的哪个位置,得出离散后的结果

这样我们在求取b【i】数量(或c【i】)的时候,也是二分查找b【i】(或c【i】)在去重后的位置,但是的出来位置上的电影编号不一定等于b【i】(或c【i】),

如果相等那么b【i】 = sc【pos】 (sc是之前科学家语言的计数),如果不等,b【i】 = 0(说明科学家中没人懂这语言);

 #include<cstdio>
#include<iostream>
#include<algorithm>
using namespace std; int n,m;
const int maxn = 2e5+;
int a[maxn];
int b[maxn];
int sc[maxn]; struct Mo
{
int b;
int c;
int id;
} mov[maxn]; bool cmp(Mo a,Mo b)
{
if(a.b == b.b)
return a.c > b.c;
return a.b > b.b;
}
int query(int x,int len)
{
return lower_bound(b+,b++len,x)-b;
}
int main()
{
scanf("%d",&n);
for(int i=; i<=n; i++)scanf("%d",&a[i]);
sort(a+,a++n);
int tmp;
int len = ;
for(int i=;i<=n;i++)
{
if(i== || a[i] != a[i-])
b[++len] = a[i];
} for(int i=;i<=n;i++)
{
tmp = query(a[i],len);
sc[tmp]++;
}
scanf("%d",&m);
for(int i=; i<=m; i++)
{
scanf("%d",&tmp),mov[i].id = i;
int pos = query(tmp,len);
if(b[pos] == tmp)mov[i].b = sc[pos];
else mov[i].b = ;
}
for(int i=; i<=m; i++)
{
scanf("%d",&tmp);
int pos = query(tmp,len);
if(b[pos] == tmp)mov[i].c = sc[pos];
else mov[i].c = ;
}
sort(mov+,mov++m,cmp);
printf("%d\n",mov[].id);
}

Cinema CodeForces - 670C (离散+排序)的更多相关文章

  1. CodeForces 670C Cinema(排序,离散化)

    C. Cinema time limit per test 2 seconds memory limit per test 256 megabytes input standard input out ...

  2. 【Codeforces 670C】 Cinema

    [题目链接] http://codeforces.com/contest/670/problem/C [算法] 离散化 [代码] #include<bits/stdc++.h> using ...

  3. CodeForces 670C Cinema

    简单题. 统计一下懂每种语言的人分别有几个,然后$O(n)$扫一遍电影就可以得到答案了. #pragma comment(linker, "/STACK:1024000000,1024000 ...

  4. CodeForces 558E(计数排序+线段树优化)

    题意:一个长度为n的字符串(只包含26个小字母)有q次操作 对于每次操作 给一个区间 和k k为1把该区间的字符不降序排序 k为0把该区间的字符不升序排序 求q次操作后所得字符串 思路: 该题数据规模 ...

  5. Division and Union CodeForces - 1101C (排序后处理)

    There are nn segments [li,ri][li,ri] for 1≤i≤n1≤i≤n. You should divide all segments into two non-emp ...

  6. Codeforces 997D(STL+排序)

    D. Divide by three, multiply by two time limit per test 1 second memory limit per test 256 megabytes ...

  7. CF思维联系--CodeForces -214C (拓扑排序+思维+贪心)

    ACM思维题训练集合 Furik and Rubik love playing computer games. Furik has recently found a new game that gre ...

  8. CodeForces - 721C 拓扑排序+dp

    题意: n个点m条边的图,起点为1,终点为n,每一条单向边输入格式为: a,b,c     //从a点到b点耗时为c 题目问你最多从起点1到终点n能经过多少个不同的点,且总耗时小于等于t 题解: 这道 ...

  9. CodeForces 22D Segments 排序水问题

    主题链接:点击打开链接 升序右键点.采取正确的点 删边暴力 #include <cstdio> #include <cstring> #include <algorith ...

随机推荐

  1. 2018年Android的保活方案效果统计

    一.常见保活方案 1.监听广播:监听全局的静态广播,比如时间更新的广播.开机广播.解锁屏.网络状态.解锁加锁亮屏暗屏(3.1版本),高版本需要应用开机后运行一次才能监听这些系统广播,目前此方案失效.可 ...

  2. 'mysql' 不是内部或外部命令,也不是可运行的程序或批处理文件

    今天安装完MYSQL8.0的版本,根据课本的提示,在CMD里运行,出现了'mysql' 不是内部或外部命令,也不是可运行的程序或批处理文件.在网上搜了一下,他的解决方法是这样的: 1.设置一下环境变量 ...

  3. Confluence 6 数据中心的 SAML 单点登录最佳实践和故障排除

    最佳实践 SAML 授权仅仅在有限的时间进行校验.你需要确定运行你的应用的计算机时间与 IdP 的时间是同步的. 如果你应用中的用户和用户组是通过用户目录进行配置的,你通常希望用户来源目录和你的 Id ...

  4. nginx实战(三)之静态资源web服务(跨站访问)

    语法 虽然说浏览器禁止跨站访问以防(CSRF),但出于一些原因还是要进行跨站访问,服务端通过设置头信息Access-Control-Allow-Orign:xxxx,客户端收到后就会允许跨站访问了 实 ...

  5. py4j汉语转拼音多音字处理

    先看下效果 一 .布局 <!-- 上面的搜索框 --> <com.example.editablealphalist.widgget.ClearEditText android:id ...

  6. 《剑指offer》 包含min函数的栈

    本题来自<剑指offer> 包含min函数的栈 题目: 定义栈的数据结构,请在该类型中实现一个能够得到栈中所含最小元素的min函数(时间复杂度应为O(1)). 思路: 举例子让抽象问题具体 ...

  7. laravel Blade 模板引擎

    与视图文件紧密关联的就是模板代码,我们在视图文件中通过模板代码和 HTML 代码结合实现视图的渲染.和很多其他后端语言不同,PHP 本身就可以当做模板语言来使用,但是这种方式有很多缺点,比如安全上的隐 ...

  8. bzoj 3529

    非常好的一道莫比乌斯反演题,对提升自己的能力有很大帮助. 首先我们分析一下题意:题意让我们求,其中 那么我们首先对后面的式子进行一下变形,变形过程详见https://blog.csdn.net/lle ...

  9. Python安装、卸载第三方模块

    pip command ModuleName command:用于指定要执行的命令(install:安装,uninstall:卸载) ModuleName:需要安装的模块名称 示例: 安装第三方模块n ...

  10. Android Studio xml文件中的布局预览视图

    操作系统:Windows 10 x64 IDE:Android Studio 3.3.1 更新了Android Studio之后,xml文件中的布局预览视图变得如此简洁! 原因是没有勾选Show La ...