#include<iostream>
#include<algorithm>
#include<cstring>
using namespace std;
int main()
{
int t,n,m,a[30005],b[30005];
cin>>t;
while(t--){
cin>>n>>m;
memset(a,0,sizeof(a));
memset(b,0,sizeof(b));
for(int i=1;i<=n;i++)
cin>>a[i];
for(int i=1;i<=m;i++)
cin>>b[i];
/*
for(int i=0;i<n;i++)
cout<<a[i]<<" ";
cout<<endl;
for(int i=0;i<m;i++)
cout<<b[i]<<" ";
cout<<endl;
*/
for(int j=1;j<=m;j++){
sort(a+1,a+b[j]+1);
//for(int i=1;i<=b[j];i++)
//cout<<"a[i]="<<a[i]<<" ";
//cout<<endl;
cout<<a[j]<<endl;
}
}
return 0;
}
总结:
1.正好利用数组下标的特性来输出第i小的元素;
2.也因为b数组默认可以是认为递增排列,所以可以这样做,如果没有这个条件,则需要对a数组的一个备份数组进行操作,借而保持a数组的原始数据;
3.sort函数的排序规则比较灵活,sort(a,a+n)表示:对 a[0]~a[n-1] 进行排序,sort(a+m,a+k) {0<=m<=k<=n} 表示:对 a[m]~a[k-1] 进行排序。