#801. 鼹鼠大盗

鼹鼠大盗

题目描述

鼹鼠大盗在某天深夜偷窃了一大包花生。它需要趁着夜色穿过一条长度为 ss 米的横向地道,把花生运回家。地道非常长,不过鼹鼠大盗这次是有备而来,它可以搭乘事先准备好的动力钻头快速推进。但这种动力钻头非常耗费能源,每推进一段距离,鼹鼠大盗就需要带着它钻出地面补充燃料,然后继续潜入地道进行下次推进。每次推进一旦开始就无法暂停。动力钻头共有 mm 个档位可以选择,其中第 ii 个档位的单次推进距离为 did_i 米。鼹鼠大盗需要在出发前就设定好档位,一旦确定就无法再更改。

暗夜笼罩的大地上危机四伏。在地道上方的地面上,有 nn 只黄鼠狼在埋伏猎物,它们的坐标分别为 x1,x2...xnx_1,x_2...x_n,每个位置最多只有一只黄鼠狼。若鼹鼠钻出地面补充燃料时遇到黄鼠狼,它就可能会有性命之忧。因此鼹鼠在出发前需要慎重选择动力钻头的档位,以便在补充燃料时尽可能避开黄鼠狼。

为便于描述,现给出定义:若选择某一档位可以使鼹鼠大盗在穿过地道的整个过程中碰到的黄鼠狼数量最少,则称这一档位为“最安全档位”。现在鼹鼠大盗以半包花生米为报酬向你寻求帮助:共有几种“最安全档位”可供选择?

输入格式

输入共33行。

第一行:三个整数 s,m,ns,m,n,分别表示地道的长度、动力钻头的档位数量、黄鼠狼的数量。

第二行:mm 个整数,分别表示每个档位的单次推进距离。

第三行:nn 个整数,分别表示每只黄鼠狼所在的坐标位置。

输出格式

输出共22行。

第一行:一个整数,表示可供选择的“最安全档位”总数。

第二行:若干个整数,分别表示每个“最安全档位”的编号。

数据样例

5 3 5
2 4 5
1 2 3 4 5
2
2 3
1000000000 2 3
2 5
999999995 999999998 999999996
1
2

样例11解释

输入数据解释:

地道总长度为55米,动力钻头共有33个档位,黄鼠狼有55只;

131-3档的单次推进距离分别为2,4,52,4,5米;

55只黄鼠狼的坐标分别在1,2,3,4,51,2,3,4,5米。

输出数据解释:

若选择第11档,单次推进距离为22,则整个行进路程中会在坐标为2,42,4的位置各碰到一只黄鼠狼;

若选择第22档,单次推进距离为44,则整个行进路程中只会在坐标为44的位置碰到一只黄鼠狼;

若选择第33档,单次推进距离为55,则整个行进路程中只会在坐标为55的位置碰到一只黄鼠狼。

因此“最安全档位”共有22种,分别是第2,32,3种。故第一行输出22,第二行输出2,32,3

数据规模与约定

对于30%30\%的数据,1xis100,1m,n10,1di1001≤x_i≤s≤100,1≤m,n≤10,1≤d_i≤100

对于80%80\%的数据, 1xis106,1m,n100,1di1061≤x_i≤s≤10^6,1≤m,n≤100,1≤d_i≤10^6

对于100%100\%的数据,1xis109,1m,n100,1di1091≤x_i≤s≤10^9,1≤m,n≤100,1≤d_i≤10^9