求调
查看原帖
求调
1615478
SRQ_321楼主2024/12/12 16:41
#include<bits/stdc++.h>
using namespace std;
using ll=long long;
ll n,a[250010],b[250010],c[250010],s=0,q=0;
string tu[10]={"TAK","NIE"};
void merge_sort(int l,int r){
	if(l==r) return;
	int mid=(r+l)/2,i=l,j=mid+1,k=l;
	merge_sort(l,mid); merge_sort(mid+1,r);
	while(i<=mid&&j<=r){
		if(a[i]<=a[j]){
			c[k++]=a[i++];
		}else{
			c[k++]=a[j++];
			s+=mid-i+1;
		}
	}
	while(i<=mid){
		c[k++]=a[i++];
	}
	while(j<=r){
		c[k++]=a[j++];
	}
	for(int f=l;f<=r;f++){
		a[f]=c[f];
	}
}
void merge_Sort(int l,int r){
	if(l==r) return;
	int mid=(r+l)/2,i=l,j=mid+1,k=l;
	merge_sort(l,mid); merge_sort(mid+1,r);
	while(i<=mid&&j<=r){
		if(b[i]<=b[j]){
			c[k++]=b[i++];
		}else{
			c[k++]=b[j++];
			q+=mid-i+1;
		}
	}
	while(i<=mid){
		c[k++]=b[i++];
	}
	while(j<=r){
		c[k++]=b[j++];
	}
	for(int f=l;f<=r;f++){
		b[f]=c[f];
	}
}
int main(){
	while(cin>>n){
		s=0,q=0;
		for(int i=1;i<=n;i++){
			for(int j=1;j<=n;j++){
				scanf("%lld",&a[j+(i-1)*n-1]);
			}
		}
		for(int i=1;i<=n;i++){
			for(int j=1;j<=n;j++){
				scanf("%lld",&b[j+(i-1)*n-1]);
			}
		}
		merge_sort(0,n*n-1);
		merge_Sort(0,n*n-1);
		cout<<tu[((s&1)==(q&1))]<<'\n';
	}
	return 0;
}
2024/12/12 16:41
加载中...