思路:vector保存元素,每次插入的时候二分位置,然后插入,询问的时候直接用下标操作
#include<iostream>
#include<set>
#include<vector>
#include<cstdio>
using namespace std;
const int maxn=30010;
int n,m;
int add[maxn];
void solve()
{
vector<int> a;
int x,j=1;
for(int i=0; i<m; i++)
{
cin>>x;
while(a.size()!=x)
{
vector<int>::iterator it=lower_bound(a.begin(),a.end(),add[j]);
a.insert(it,add[j++]);
}
cout<<a[i]<<endl;
}
}
int main()
{
#ifndef ONLINE_JUDGE
freopen("in.txt","r",stdin);
#endif
int t;
cin>>t;
bool first=true;
while(t--)
{
if(first)first=false;
else cout<<endl;
cin>>n>>m;
for(int i=1; i<=n; i++)cin>>add[i];
solve();
}
return 0;
}