結果
| 問題 |
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()