結果

問題 No.2986 Permutation Puzzle
ユーザー daiotadaiota
提出日時 2024-12-11 22:55:54
言語 C++14
(gcc 12.3.0 + boost 1.83.0)
結果
RE  
実行時間 -
コード長 3,085 bytes
コンパイル時間 2,362 ms
コンパイル使用メモリ 194,236 KB
実行使用メモリ 6,824 KB
最終ジャッジ日時 2024-12-11 22:56:08
合計ジャッジ時間 13,109 ms
ジャッジサーバーID
(参考情報)
judge4 / judge1
このコードへのチャレンジ
(要ログイン)

テストケース

テストケース表示
入力 結果 実行時間
実行使用メモリ
testcase_00 AC 2 ms
5,248 KB
testcase_01 AC 2 ms
5,248 KB
testcase_02 AC 40 ms
5,248 KB
testcase_03 AC 121 ms
5,248 KB
testcase_04 AC 2 ms
5,248 KB
testcase_05 AC 3 ms
5,248 KB
testcase_06 AC 2 ms
5,248 KB
testcase_07 AC 5 ms
5,248 KB
testcase_08 AC 5 ms
5,248 KB
testcase_09 AC 2 ms
5,248 KB
testcase_10 RE -
testcase_11 AC 41 ms
5,248 KB
testcase_12 AC 19 ms
5,248 KB
testcase_13 AC 54 ms
5,248 KB
testcase_14 RE -
testcase_15 AC 66 ms
5,248 KB
testcase_16 RE -
testcase_17 RE -
testcase_18 AC 5 ms
5,248 KB
testcase_19 RE -
testcase_20 RE -
testcase_21 AC 184 ms
5,248 KB
testcase_22 RE -
testcase_23 RE -
testcase_24 AC 265 ms
5,248 KB
testcase_25 AC 33 ms
5,248 KB
testcase_26 AC 44 ms
5,248 KB
testcase_27 AC 324 ms
5,248 KB
testcase_28 AC 113 ms
5,248 KB
testcase_29 AC 429 ms
5,248 KB
testcase_30 AC 133 ms
5,248 KB
testcase_31 AC 58 ms
5,248 KB
testcase_32 AC 300 ms
5,248 KB
testcase_33 AC 111 ms
5,248 KB
testcase_34 AC 38 ms
5,248 KB
testcase_35 AC 554 ms
5,248 KB
testcase_36 AC 323 ms
5,248 KB
testcase_37 AC 316 ms
5,248 KB
testcase_38 AC 120 ms
5,248 KB
testcase_39 AC 462 ms
5,248 KB
testcase_40 AC 326 ms
5,248 KB
testcase_41 AC 547 ms
5,248 KB
testcase_42 AC 2 ms
5,248 KB
testcase_43 AC 272 ms
5,248 KB
権限があれば一括ダウンロードができます

ソースコード

diff #

#include <bits/stdc++.h>

using namespace std;

typedef long long ll;
typedef pair<int,int> P;
#define REP(i,n) for(ll i=0;i<ll(n);i++)





int N,K;
vector<vector<int>> f(int r,vector<vector<int>> x){

	int n=x[1].size();
	vector<vector<int>> v(n, vector<int>(n));
	for(int j=1;j<n;j++){
		int p=x[r][j];
		v[p]=x[j];
	}

	return v;
}

vector<vector<int>> g(int c,vector<vector<int>> x){

	int n=x[1].size();
	vector<vector<int>> v(n, vector<int>(n));
	for(int i=1;i<n;i++){
		int p=x[i][c];
		for(int j=1;j<n;j++) v[j][p]=x[j][i];
	}

	return v;
}



int main(void){
	cin.tie(nullptr);  ios_base::sync_with_stdio(false);
	int i,j,k,l;


	int N,K;
	cin >> N >> K;
	vector<vector<int>> a(N+1, vector<int>(N+1)),b(N+1, vector<int>(N+1));
	for(i=1;i<=N;i++) for(j=1;j<=N;j++) cin >> a[i][j];
	for(i=1;i<=N;i++) for(j=1;j<=N;j++) cin >> b[i][j];


	int p=-1,q=-1,r=-1,s=-1;

	bool h=false;

	vector<vector<int>> c,x,y,z,u;
	for(i=1;i<=2*N;i++){
		for(j=1;j<=2*N;j++){
			for(k=1;k<=2*N;k++){
				for(l=1;l<=2*N;l++){

					c=a;

					if(i<=N) c=f(i,c);
					else c=g(i-N,c);
					x=c;

					if(j<=N) c=f(j,c);
					else c=g(j-N,c);
					y=c;

					if(k<=N) c=f(k,c);
					else c=g(k-N,c);
					z=c;

					if(l<=N) c=f(l,c);
					else c=g(l-N,c);
					u=c;


					if(c==b){
						h=true;
						p=i;
						q=j;
						r=k;
						s=l;
						break;
					}

				}
				if(h) break;

			}
			if(h) break;

		}
		if(h) break;

	}


	vector<char> v0;
	vector<int> v2;

	if(s<=N){

		while(u!=z){
			int pp=-1;
			for(i=1;i<=N;i++){
				if(u[i][1]==z[s][1]){
					pp=i;
					break;
				}
			}
			u=f(pp,u);
			v2.push_back(pp);
			v0.push_back('R');
		}


	}else{

		while(u!=z){
			int pp=-1;
			for(i=1;i<=N;i++){
				if(u[1][i]==z[1][s-N]){
					pp=i;
					break;
				}
			}
			u=g(pp,u);
			v2.push_back(pp);
			v0.push_back('C');
		}

	}


	if(r<=N){

		while(z!=y){
			int pp=-1;
			for(i=1;i<=N;i++){
				if(z[i][1]==y[r][1]){
					pp=i;
					break;
				}
			}
			z=f(pp,z);
			v2.push_back(pp);
			v0.push_back('R');

		}


	}else{

		while(z!=y){
			int pp=-1;
			for(i=1;i<=N;i++){
				if(z[1][i]==y[1][r-N]){
					pp=i;
					break;
				}
			}
			z=g(pp,z);
			v2.push_back(pp);
			v0.push_back('C');

		}

	}


	if(q<=N){

		while(y!=x){
			int pp=-1;
			for(i=1;i<=N;i++){
				if(y[i][1]==x[q][1]){
					pp=i;
					break;
				}
			}
			y=f(pp,y);
			v2.push_back(pp);
			v0.push_back('R');

		}


	}else{

		while(y!=x){
			int pp=-1;
			for(i=1;i<=N;i++){
				if(y[1][i]==x[1][q-N]){
					pp=i;
					break;
				}
			}
			y=g(pp,y);
			v2.push_back(pp);
			v0.push_back('C');
		}

	}


	if(p<=N){

		while(x!=a){
			int pp=-1;
			for(i=1;i<=N;i++){
				if(x[i][1]==a[p][1]){
					pp=i;
					break;
				}
			}
			x=f(pp,x);
			v2.push_back(pp);
			v0.push_back('R');
		}

	}else{

		while(x!=a){
			int pp=-1;
			for(i=1;i<=N;i++){
				if(x[1][i]==a[1][p-N]){
					pp=i;
					break;
				}
			}
			x=g(pp,x);
			v2.push_back(pp);
			v0.push_back('C');
		}

	}


	int w=v2.size();
	cout << w << endl;

	for(i=0;i<w;i++){
		cout << v0[i] << ' ' << v2[i] << endl;
	}






     return 0;

}

0