题目背景
一天,GD和MW正在玩一款名叫大海战的游戏。
题目描述
游戏在一个1*n的棋盘上进行。一开始GD拥有c种战舰,每种战舰的宽度为1,长度为ci,共有ti个。GD要将所有这些战舰放置在棋盘上,并且任意两艘战舰间不能重叠(但可以相邻)。接下来,MW进行q次“攻击”,每次攻击一个1*1的格子,而MW将告知他这次攻击是否“打中”了一艘战舰(或者它的某个部分)。令人疑惑的是,每次MW都告诉GD说他没有打中任何一艘战舰,而这显然是不现实的。现在MW把整个游戏的过程告诉了你,他想知道,最早在他的第几次询问之后,可以断定GD一定(至少有一次)说了谎。
输入输出格式
输入格式:
第一行一个整数t,表示测试数据的组数。对于每组数据,第一行三个整数n,c,q,代表棋盘的长度、战舰的种数和攻击的次数。接下来c行,每行两个整数ci、ti,表示第i种战舰的长度和数量。(不同的战舰,长度可能相同。)接下来一行q个整数,表示MW的攻击序列。
输出格式:
对于每组数据,输出一个整数ans,表示最早在第ans次操作后可以断定GD说了谎。特别地,如果一开始就不可能按要求摆上所有的战舰,输出0;如果q次询问后都不能判断GD是否说了谎,则输出-1。
输入输出样例
输入样例#1:
3
12 2 2
1 1
2 5
6 8
5 1 2
3 1
1 5
11 3 0
2 2
3 1
5 1
输出样例#1:
2
-1
0
说明
样例解释
对于第一个样例,存在布阵{1,22,22,0,22,22,22}(0表示没有放置),使得第一次不会受到攻击;不存在一个布阵使得两次都没有受到攻击。
对于第二个样例,存在布阵{0,333,0},使得两次均不会受到攻击。
对于第三个样例,一开始就不可能把所有战舰合法地布置在棋盘上。
数据范围
对于100%的数据,1<=t<=5,n>=1,c>=1,q>=0,1<=qi<=n,0<=ci<=100000,0<=ti<=100000。
对于测试点1,n<=1000000000,c<=100000,q=0;
对于测试点2、3,所有的ti均为1;
对于测试点2-8,n<=400000,c<=100,q=1;
对于测试点9,n<=100,c=1,q<=100;
对于测试点10-14,n<=200000,c=1,q<