由于数据太大暴力循环会超时,如果先打表预处理一下就行了。
#include <iostream>
#include <stdio.h>
#include <string.h>
using namespace std;
const int maxn=1e5+5;
int a[maxn*2];
int b[maxn*2];
void prepare() {
int ans=maxn*2;
for(int l=maxn*2; l>=1; l--) {
if(a[l]==0)
ans=l;
b[l]=ans;
}
}
int main() {
int T;
scanf("%d",&T);
while(T--) {
int n,m,t;
scanf("%d%d",&n,&m);
memset(a,0,sizeof(a));
for(int l=0; l<n; l++) {
scanf("%d",&t);
a[t]=1;
}
prepare();
while(m--) {
int s;
scanf("%d",&s);
printf("%d\n",b[s]);
}
}
return 0;
}