不是很理解为什么错了
查看原帖
不是很理解为什么错了
599287
_masppy_楼主2023/9/10 14:32
#include<bits/stdc++.h>
#define ll long long
using namespace std;
const int maxn=3e3+10;
const ll mod=1e9+9;
int n,m,t;
int ans[maxn],a[maxn],b[maxn],c[maxn],d[maxn];
priority_queue< int,vector<int>,greater<int> > q;

int main(){    
	scanf("%d",&t);
	
	while(t--){
		scanf("%d",&n);
		
		for(int i=1;i<=n;i++){
			scanf("%d",&a[i]);
			c[i]=a[i];
		}
		for(int i=1;i<=n;i++){
			scanf("%d",&b[i]);
			d[i]=b[i];
		}
		sort(c+1,c+1+n);
		sort(d+1,d+1+n);
		
		bool fg=0;
		for(int i=1;i<=n;i++){
			if(c[i]!=d[i]){
				fg=1;
				break;
			}
		}
		if(fg){
			printf("NO\n");
			continue;
		}
		
		printf("YES\n");
		for(int i=1;i<=n;){
			if(a[i]==b[i]){
				i++;
				continue;
			}
			for(int j=i+1;j<=n;j++){
				if(a[j]!=b[j]&&a[i]==b[j]){
					for(int k=i+1;k<=j;k++){
						swap(a[k-1],a[k]);
						printf("%d %d\n",k-1,k);
					}
					break;
				}
			}
		}
		printf("0 0\n");
	}
	return 0;
}
2023/9/10 14:32
加载中...