分析:
如果需要交换,那么就要从前面开始判断a[i]和x的大小把小的换到前面。因为不知道换到那一次就可以了,所以每换一次判断一下如果符合不降序直接输出。
#include<bits/stdc++.h>
using namespace std;
const int N=550;
int a[N];
int n,x;
bool check(){
for(int i=0;i<n-1;i++){
if(a[i]>a[i+1])return false;
}
return true;
}
void slove(){
int ans=0;
cin>>n>>x;
memset(a,0,sizeof a);
for(int i=0;i<n;i++)cin>>a[i];
if(check()){
cout<<0<<"\n";
return ;
}
for(int i=0;i<n;i++){
if(a[i]>x){
swap(a[i],x);
ans++;
}
if(check()){
cout<<ans<<"\n";
return ;
}
}
cout<<-1<<"\n";
}
int main(){
cin.tie(0);
cout.tie(0);
ios::sync_with_stdio(0);
int t;
cin>>t;
while(t--){
slove();
}
return 0;
}