#include <bits/stdc++.h>
using namespace std;
int a[11000];
struct node
{
int s,e;
}tmp,ans[21000]; int n;
int Find(int x)
{
for(int i = 1; i <= n; i++)
{
if(a[i] == x)
return i;
}
return 0;
}
void Swap(int st, int ed)
{
int mid = (st + ed)/2;
for(int i =st, j = mid +1; i <= mid; i++,j++)
{
swap(a[i],a[j]);
}
}
int main()
{
int t;
scanf("%d",&t);
while(t--)
{
int sum;
scanf("%d", &n);
for(int i = 1; i <= n; i++)
{
scanf("%d", &a[i]);
}
sum = 0;
for(int i = 1; i <= n; i++)
{
int id = Find(i);
//printf("id: %d %d\n", i,id);
if(a[i] == i)
continue;
if( (id - i) * 2 + i - 1 <= n)
{
ans[sum].s = i;
ans[sum++].e = (id - i) * 2 + i - 1;
}
else
{
if( (id - i)%2 )
ans[sum].s = i,ans[sum++].e = id;
else ans[sum].s = i+1,ans[sum++].e = id;
i--;
}
//printf("%d ____ %d\n",ans[sum-1].s,ans[sum -1].e);
Swap(ans[sum-1].s,ans[sum -1].e);
// for( int k = 1; k <= n; k++)
// printf("%d ",a[k]);printf("\n");
}
printf("%d\n",sum);
for(int i = 0; i < sum; i++)
{
printf("%d %d\n",ans[i].s, ans[i].e);
}
}
}
I - Crane UVALive - 6588
最新推荐文章于 2019-07-28 10:30:36 发布