結果

問題 No.3131 Twin Slide Puzzles
ユーザー E49869826
提出日時 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

ソースコード

diff #

# 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()
0