結果
問題 | No.3131 Twin Slide Puzzles |
ユーザー |
|
提出日時 | 2025-04-26 01:15:02 |
言語 | Nim (2.2.0) |
結果 |
AC
|
実行時間 | 142 ms / 4,000 ms |
コード長 | 4,690 bytes |
コンパイル時間 | 6,639 ms |
コンパイル使用メモリ | 100,848 KB |
実行使用メモリ | 43,912 KB |
最終ジャッジ日時 | 2025-06-20 02:51:16 |
合計ジャッジ時間 | 16,032 ms |
ジャッジサーバーID (参考情報) |
judge5 / judge3 |
(要ログイン)
ファイルパターン | 結果 |
---|---|
sample | AC * 3 |
other | AC * 59 |
コンパイルメッセージ
check is off optimized for speed
ソースコード
# Please use Nim-ACL import macros; macro ImportExpand(s:untyped):untyped = parseStmt(staticExec("echo " & $s[2] & " | base64 -d | xzcat")) # const OPTIMIZE_SIZE = true const DO_CHECK = false ImportExpand "e_lib/templates/prelude.nim" <=== "/Td6WFoAAATm1rRGBMDVAbcDIQEcAAAAAAAAACCR30TgAbYAzV0AO5oI1C1idKD0QZYV0fOAnhkRk8DYDgYLvW4kETVDkMKYnqKn4EdJ45ADEotk3Fzy6+uCgtloS+R+zMfrO1PsKrD6PAItU12dFn+j36AJr0C5lQKxDi/W1Pg0oxGvMT8WS8YU4PB6HfUIzjQNtyTxD7iSOvQroY/x27WsBEEypTKbCivXXtbhkrLA7v//ircG/SHYno1AzzS2GrGoUaXwKUTZZqARMGIqi7UOWlW8c7l+/UyOfWXxE1aFEIVXatIpNJ90ahL9yg41vb8AAAAAAABSO8+SHsHkDwAB8QG3AwAAq/8YorHEZ/sCAAAAAARZWg==" ImportExpand "e_lib/templates/header.nim" <=== "/Td6WFoAAATm1rRGBMCaCfgaIQEcAAAAAAAAAIXTvZ7gDXcEkl0AO5oI1C1idKD0QZYV0fOAnhkRk8DYDgYLvW4kETVDkMKYnp/fJa19efd+dBLhqKM27qXxSjp+2XYWpxVZPG6LaSOrKVt4rGQsWhmoP3rfo51NQlWw/70ZvGLp/YOOBtkOb6RN0tHeu/P5Ubha/OiyUYEOH6Roz89Az9XuRZO6ckn8E5iwy0uEobq0Po1C7BkF+uiJcd2r4Jx7e1WlqwvDHUv7ZOiHVwi7gx60zOZ8oalb+NEHIZjr8xwMl6W/awT8CzlxE/ojjrptxyElfVbuG5dYlr6/GxdTXh65Zo+usp6oA7q5yz/k9H4n/HJhKn72CPY+XP/wgLIsHK6z0fCzf9Jeb05qVOUN3C83VnmQeYDYYn/J++4mRkcnDJoioHqpJx6Et46KYMu8i2UZbwDjVK36xMx2Nkce0mG93svBpMxM7+srhrnmI0s0wmaOazXeE9Sa0z+ev2lUPYp515ZurRt5HJFnVh7G7yqmhylJp1W7V+lCjuynGdGV5nkwp/glMc2Htjg5OUlVSZyfbX9/Jn0uW1NJXGOlLAyRyyPlM+ByWDmYKPPM0B4yfet17GbwC4gAvrwjBOn61qlIS6w0PA2uOMcYEGaQvmwHA5THSeR/ScQWFbkr77Lm66QMh5JaViIqM5Oz/Mf/bjg7Eaz4ot5vM/o4UqfpwFoO/LKfw2NIo2eNXocjLC7b30eHT3siVitc6v3gt2PbhlRWfx5+YBAvxE7+b2GtT5Ixw8/P8h4QkpllwsMGAbV8HKHA/SU1H9u5cVIvCKY8LUPTwh/np3ywn55d55UEWgf297aqx9gY3i+4i0HPEOB3rMRkK2kwmHK1IeutalGQov8qqrzeQ5nxlJm/K0FGAIZ8dKAeKV8cn78Mppb2iWGGdh78Gf9j4VHDPIbbJJEiG1oFiBUyGYSFlY1pd0TJnjoT8OMm33XBa7Ohg4FS51sTKAaU7lAtXv8WNWwL2yU+1w7gdCARnyNRwOgSxT5qHcsybcPxhZQ/b2bWDL7emQXIGulLxnQlceC30x+c9KWOKTPcplPQUF723y1TegKdyySkw8BI8mju/owDHR8Ro8sF5oBurihNcFdsogKmGMK4+Qu3uvdKyCetHm7oM5DX2dG57bQbgXfnZEQKs6LAAvwgx/wZ9WCmbKoHNb3W0DbBqgRcQxLoJUCPUBY7xc4Y4VhuSaGTRst50Zjhl//avwmFqjQQsc1zCQ3lVT+EJCV6xL7RdTJ6X0Ubao00I9KP1G88VMOsNSEmmG0TLiAGxed0pE/UJf3S8zusarKZqqauJ+u8FK/qjXO4VZmFPeOhFUeWysilqj3hQF8rlfSmV7H+ZuwijtegX8C5nagGSGnJUt3FzsGMboHq8qELQKHGd4Q4T1xueaN10vgH6/ZP3D9myajy+/xaUg7iK5uRb4UFP38ASrCINpNvI6tGrxgQoepX4nXAGiu4cycbJvkKO3tOsJxgz/Hihvx10ro+WULRG2ZT6sY18el3Yz1kaL4CWDFWgbhOODO6PIAZc/7ahJpeV0Kjo4AXeQUEOzCUco8JRAcwPsAXCFUFAAAAC8LwdCe+edkAAbYJ+BoAACpetVCxxGf7AgAAAAAEWVo=" randomize(7018982539363905355) const YES = "Yes" const NO = "No" proc `$`(a:bool):string = return if a: YES else: NO proc solve():void = return proc main():void = # Failed to predict input format let N = nextInt() let A = newSeqWith(N*N,nextInt()) if N >= 4: stdout.writeLine(Yes) var re0 = initTable[int,array[15,int8]]() var te1: array[15,int8] for i in 0..<15: te1[i] = i.int8 var te2 = 0u16 var re1 = 0 while true: shuffle(te1) te2 = 0u16 re1 = 0 for i in te1: re1 += (te2 shr i).countSetBits te2.setBit(i) if re1.testBit(0): continue let te3 = (0..<15).foldl(a+A[b+1]*(te1[b]+1).int,0) if re0.hasKey(te3): if re0[te3] == te1: continue let te4 = re0[te3] var i0 = 0 for i in 0..<N: for j in 0..<N: stdout.write(if i0 in 1..15: (te4[i0-1]+1).int else: i0) stdout.write(if j == N-1: '\n' else: ' ') i0.inc() i0 = 0 for i in 0..<N: for j in 0..<N: stdout.write(if i0 in 1..15: (te1[i0-1]+1).int else: i0) stdout.write(if j == N-1: '\n' else: ' ') i0.inc() return re0[te3] = te1 block: var re0 = initTable[int,seq[int]]() var te1 = (0..<N*N).toSeq var te2 = 0u16 var re1 = false while true: te2 = 0u16 re1 = false for i in te1: re1 = re1 xor (te2 shr i).countSetBits.testBit(0) te2.setBit(i) block bl1: var i0 = 0 for i in 0..<N: for j in 0..<N: if te1[i0] == 0: re1 = re1 xor (i+j).testBit(0) break bl1 i0.inc() if not re1: let te3 = (0..<N*N).foldl(a+te1[b]*A[b],0) if re0.hasKey(te3): stdout.writeLine(YES) let te4 = re0[te3] var i0 = 0 for i in 0..<N: for j in 0..<N: stdout.write(te4[i0]) stdout.write(if j == N-1: '\n' else: ' ') i0.inc() i0 = 0 for i in 0..<N: for j in 0..<N: stdout.write(te1[i0]) stdout.write(if j == N-1: '\n' else: ' ') i0.inc() return re0[te3] = te1 if not te1.nextPermutation: break stdout.writeLine(NO) return main()