結果
問題 |
No.2986 Permutation Puzzle
|
ユーザー |
![]() |
提出日時 | 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 |
ソースコード
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