結果

問題 No.452 横着者のビンゴゲーム
ユーザー t8m8⛄️
提出日時 2016-12-03 16:13:17
言語 Nim
(2.2.0)
結果
AC  
実行時間 2,870 ms / 3,000 ms
コード長 3,063 bytes
コンパイル時間 4,384 ms
コンパイル使用メモリ 70,016 KB
実行使用メモリ 5,376 KB
最終ジャッジ日時 2024-06-29 20:57:05
合計ジャッジ時間 26,120 ms
ジャッジサーバーID
(参考情報)
judge2 / judge3
このコードへのチャレンジ
(要ログイン)
ファイルパターン 結果
sample AC * 3
other AC * 41
権限があれば一括ダウンロードができます
コンパイルメッセージ
/home/judge/data/code/Main.nim(20, 21) Warning: Deprecated since v0.20, use 'initHashSet'; initSet is deprecated [Deprecated]
/home/judge/data/code/Main.nim(30, 21) Warning: Deprecated since v0.20, use 'initHashSet'; initSet is deprecated [Deprecated]
/home/judge/data/code/Main.nim(40, 21) Warning: Deprecated since v0.20, use 'initHashSet'; initSet is deprecated [Deprecated]
/home/judge/data/code/Main.nim(50, 21) Warning: Deprecated since v0.20, use 'initHashSet'; initSet is deprecated [Deprecated]
/home/judge/data/code/Main.nim(60, 21) Warning: Deprecated since v0.20, use 'initHashSet'; initSet is deprecated [Deprecated]
/home/judge/data/code/Main.nim(72, 21) Warning: Deprecated since v0.20, use 'initHashSet'; initSet is deprecated [Deprecated]
/home/judge/data/code/Main.nim(83, 21) Warning: Deprecated since v0.20, use 'initHashSet'; initSet is deprecated [Deprecated]
/home/judge/data/code/Main.nim(94, 21) Warning: Deprecated since v0.20, use 'initHashSet'; initSet is deprecated [Deprecated]
/home/judge/data/code/Main.nim(105, 21) Warning: Deprecated since v0.20, use 'initHashSet'; initSet is deprecated [Deprecated]

ソースコード

diff #

import strutils, sequtils, sets

when isMainModule:
  var
    tmp = stdin.readLine.split.map(parseInt)
    (n, m) = (tmp[0], tmp[1])
    a = newSeqWith(m, newSeqWith(n, newSeq[int](n)))

  for i in 0..m-1:
    for j in 0..n-1:
      a[i][j] = stdin.readLine.split.map(parseInt)

  var min = 1 shl 30

  for i in 0..m-1:
    for j in i+1..m-1:
      # yoko * yoko
      for li in 0..n-1:
        for lj in 0..n-1:
          var cnt = initSet[int]()
          for ci in 0..n-1:
            cnt.incl(a[i][li][ci])
          for cj in 0..n-1:
            cnt.incl(a[j][lj][cj])
          min = min(min, cnt.len)

      # tate * tate
      for ci in 0..n-1:
        for cj in 0..n-1:
          var cnt = initSet[int]()
          for li in 0..n-1:
            cnt.incl(a[i][li][ci])
          for lj in 0..n-1:
            cnt.incl(a[j][lj][cj])
          min = min(min, cnt.len)

      # yoko * tate
      for li in 0..n-1:
        for cj in 0..n-1:
          var cnt = initSet[int]()
          for ci in 0..n-1:
            cnt.incl(a[i][li][ci])
          for lj in 0..n-1:
            cnt.incl(a[j][lj][cj])
          min = min(min, cnt.len)

      # tate * yoko
      for ci in 0..n-1:
        for lj in 0..n-1:
          var cnt = initSet[int]()
          for li in 0..n-1:
            cnt.incl(a[i][li][ci])
          for cj in 0..n-1:
            cnt.incl(a[j][lj][cj])
          min = min(min, cnt.len)

      # naname * naname
      for si in 0..1:
        for sj in 0..1:
          var cnt = initSet[int]()
          for k in 0..n-1:
            if si == 0: cnt.incl(a[i][k][k])
            else: cnt.incl(a[i][k][n-k-1])
          for k in 0..n-1:
            if sj == 0: cnt.incl(a[j][k][k])
            else: cnt.incl(a[j][k][n-k-1])
          min = min(min, cnt.len)

      # yoko * naname
      for li in 0..n-1:
        for sj in 0..1:
          var cnt = initSet[int]()
          for ci in 0..n-1:
            cnt.incl(a[i][li][ci])
          for k in 0..n-1:
            if sj == 0: cnt.incl(a[j][k][k])
            else: cnt.incl(a[j][k][n-k-1])
          min = min(min, cnt.len)

      # naname * yoko
      for si in 0..1:
        for lj in 0..n-1:
          var cnt = initSet[int]()
          for k in 0..n-1:
            if si == 0: cnt.incl(a[i][k][k])
            else: cnt.incl(a[i][k][n-k-1])
          for cj in 0..n-1:
            cnt.incl(a[j][lj][cj])
          min = min(min, cnt.len)

      # tate * naname
      for ci in 0..n-1:
        for sj in 0..1:
          var cnt = initSet[int]()
          for li in 0..n-1:
            cnt.incl(a[i][li][ci])
          for k in 0..n-1:
            if sj == 0: cnt.incl(a[j][k][k])
            else: cnt.incl(a[j][k][n-k-1])
          min = min(min, cnt.len)

      # naname * tate
      for si in 0..1:
        for cj in 0..n-1:
          var cnt = initSet[int]()
          for k in 0..n-1:
            if si == 0: cnt.incl(a[i][k][k])
            else: cnt.incl(a[i][k][n-k-1])
          for lj in 0..n-1:
            cnt.incl(a[j][lj][cj])
          min = min(min, cnt.len)

  echo min - 1
0