結果

問題 No.2986 Permutation Puzzle
ユーザー ID 21712
提出日時 2024-12-29 18:50:26
言語 Fortran
(gFortran 14.2.0)
結果
AC  
実行時間 43 ms / 2,000 ms
コード長 1,313 bytes
コンパイル時間 488 ms
コンパイル使用メモリ 36,308 KB
実行使用メモリ 5,248 KB
最終ジャッジ日時 2024-12-29 18:50:29
合計ジャッジ時間 3,296 ms
ジャッジサーバーID
(参考情報)
judge5 / judge2
このコードへのチャレンジ
(要ログイン)
ファイルパターン 結果
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(r),icol(op)), r=1, n) /)
			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(c)), c=1, n) /)
			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