思路:

此题看起来很复杂,其实仔细推一推可以发现是有规律的。

分两种情况:

  1. 当 $n\le min\left { a{i} \right }$ 时,答案为 $min\left { a{i} \right } -1$。

  2. 当 $n> min\left { a_{i} \right } $ 时,这时一个人都踢不了,所以答案为 $n$。

对于每一个 $n$,输出两种情况中的最小值即可。

代码:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
#include<bits/stdc++.h>
using namespace std;
int t,k,q,a,n;
int minn;
int main() {
cin>>t;
for(int j=1;j<=t;j++) {
minn=1145141919;
cin>>k>>q;
for(int i=1; i<=k; i++) {
cin>>a;
minn=min(minn,a);//求最小的a[i]
}
for(int i=1;i<=q;i++) {
cin>>n;
cout<<min(minn-1,n);//输出两种情况中最优的。
}
cout<<endl;
}
return 0;
}