結果

問題 No.2986 Permutation Puzzle
ユーザー ID 21712
提出日時 2025-01-01 00:53:53
言語 Fortran
(gFortran 14.2.0)
結果
AC  
実行時間 28 ms / 2,000 ms
コード長 1,274 bytes
コンパイル時間 467 ms
コンパイル使用メモリ 35,976 KB
実行使用メモリ 6,820 KB
最終ジャッジ日時 2025-01-01 00:53:59
合計ジャッジ時間 2,917 ms
ジャッジサーバーID
(参考情報)
judge2 / judge4
このコードへのチャレンジ
(要ログイン)
ファイルパターン 結果
sample AC * 4
other AC * 40
権限があれば一括ダウンロードができます

ソースコード

diff #

implicit none

integer :: n, k
integer, dimension(10,10) :: a, b
integer, dimension(4,10) :: p
integer, dimension(10) :: icol,irow,itmp,ct,cw
integer, dimension(4) :: ops
integer, dimension(1000) :: ans
integer :: r, c, i, j, t, op, e, anslen, z

read (*,*) n, k, ((a(r,c),c=1,n),r=1,n), ((b(r,c),c=1,n),r=1,n)

do e=1, (2*n)**k
	icol(1:n) = (/ (i, i=1, n) /)
	irow(1:n) = (/ (i, i=1, n) /)
	t = e-1
	do j=1, k
		op = mod(t, 2*n) + 1
		ops(j) = op
		t = t / (2*n)
		if ( op <= n ) then
			p(j,1:n) = a(irow,icol(op))
			do i=1, n
				itmp(p(j,i)) = icol(i)
			end do
			icol(1:n) = itmp(1:n)
		else 
			p(j,1:n) = a(irow(op-n),icol)
			do i=1, n
				itmp(p(j,i)) = irow(i)
			end do
			irow(1:n) = itmp(1:n)
		end if
	end do
	if ( all (b(1:n,1:n) == a(irow(1:n),icol(1:n))) ) then
		do j=k, 1, -1
			op = ops(j)
			z = mod(op-1, n)+1
			cw(1:n) = p(j,1:n)
			do
				do i=1, n
					ct(p(j,i)) = cw(i)
				end do
				if ( all (ct(1:n) == p(j,1:n)) ) then
					exit
				end if
				z = p(j,z)
				anslen = anslen + 1
				ans(anslen) = z + ((op-1)/n)*n
				cw(1:n) = ct(1:n)
			end do
		end do
		print '(I0)', anslen
		do i=1, anslen
			op = ans(i)
			if ( op <= n ) then
				print '("C ",I0)', op
			else
				print '("R ",I0)', op-n
			end if
		end do
		stop
	end if
end do

end
0