有编号位1到n的共n人作为嘉宾参加一个电视节目,他们将坐在从左到右依次编号为1到m的一排座位上。这n个人来了,他们将按照进入场地的顺序依次坐下,每个人占据座位的方式共分为以下三种:
方式1:坐在最左边已经坐着的人的左边空座位上,或者如果1号座位已经有人坐了,那么就直接退场。如果目前没有人坐(即m个座位都是空的),请坐在m号座位。
方式2:坐在已经坐下的最右边的人右边的座位上,或者如果m号座位已经有人坐了,那么就直接退出。如果当前没有人坐(即m个座位都是空的),请坐在1号座位上。
方式3:请坐在第xi号座位上。如果这个座位有人坐,请直接退场。
如果我们可以让n个人以任意顺序依次进入节目场地,现在我们想知道最多有多少人可以有座位坐下?
第一行一个整数t(1≤t≤2e4):测试用例数;
接下来共2t行,每个测试用例两行:
第一行共两个整数n和m(1≤n,m≤1e5):人数和座位数;
第二行为n个整数x1,x2,……,xn (-2≤xi≤m, 且xi≠0):xi表示第i个人进入场地占据座位的方式;
1)如果xi=-1,则选择方式1占据座位;
2)如果xi=-2,则选择方式2占据座位;
3)如果xi>0,则选择方式3占据座位;
在第一个测试用例中,所有人都将选择5号座位,所以最多只能坐1人;
在第二个测试用例中,可以将嘉宾按照1,2,3,4的顺序依次进场,这样只有最后一个人无法挑选到座位直接退场,其他3人都可以找到座位,所以最多可以坐3人;
在第三个测试用例中,嘉宾可以按照以下顺序进场:
3—4—5—1—2 即:
1)3号嘉宾首先进场,找到4号座位坐下,座位图如下:
-
- - 3 - - - (其中:- 表示空座位,3表示4号座位上坐的是第3号嘉宾)
2)接下来,4号嘉宾进场,按照方式2找到5号座位坐下,座位图如下:
-
- - 3 4 - -
3)接下来,5号嘉宾进场,按照方式2找到6号座位坐下,座位图如下:
-
- - 3 4 5 –
4)接下来,1号嘉宾进场,按照方式1找到3号座位坐下,座位图如下:
-
- 1 3 4 5 –
5)最后,2号嘉宾进场,按照方式1找到2号座位坐下,座位图如下:
- 2 1 3 4 5 –
所以,按上述进场方式,5位嘉宾都可以找到自己的座位坐下,最多可以坐5人;