如果你们看不见代码我就放出来:
# include <bits/stdc++.h>
# define old_six \
ios::sync_with_stdio (0);\
\
cin.tie (0);\
\
cout.tie (0);
# define ffor(i,name) \
for (auto i = name.begin (); i != name.end (); i ++)
# define iter(type) \
type :: iterator
# define reg register
# define inl inline
using namespace std;
typedef long long ll;
typedef pair <int, int> pii;
typedef pair <ll, ll> pll;
typedef size_t st;
int t, n, a[262150], ans;
bool f;
void merge (int& l, int& mid) {
reg int i = l, j = mid + 1;
while (i <= mid)
swap (a[i], a[j]), ++ i;
return ;
}
bool stablesort (int l, int r) {
if (l >= r)
return 0;
int mid = (l + r) / 2;
if (stablesort (l, mid) || stablesort (mid + 1, r))
return 1;
if (a[mid] < a[mid + 1])
return 0;
else if (a[l] > a[r])
merge (l, mid), ++ ans;
else
return f = 1;
return 0;
}
int main () {
old_six
cin >> t;
while (t --) {
cin >> n;
ans = f = 0;
for (reg int i = 0; i < n; ++ i)
cin >> a[i];
if (stablesort (0, n - 1))
cout << "-1\n";
else
cout << ans << '\n';
}
return 0;
}