rt,第九个测试点没过
#include <bits/stdc++.h>
using namespace std;
int t,n,a[1000010];
int main(){
cin>>t;
for(int i=1;i<=t;i++){
cin>>n;
int l=INT_MAX,r=INT_MIN,x;
for(int i=1;i<=n;i++){
cin>>a[i];
if(i==a[i]) continue;
l=min(min(a[i],i),l);
r=max(max(a[i],i),r);
}
int ans=r-l+1;
if(l==INT_MAX && r==INT_MIN){
cout<<0<<endl;
continue;
}
int last=l,maxx=INT_MIN;
for(int i=l;i<=r;i++){
if(i!=l)
maxx=max(maxx,a[i-1]);
if(i==a[i] && i-last>=2 && a[i]>maxx){
last=i;
ans--;
}
}
cout<<ans<<endl;
}
return 0;
}