結果

問題 No.133 カードゲーム
ユーザー yuppe19 😺yuppe19 😺
提出日時 2015-12-29 13:57:14
言語 Nim
(2.0.2)
結果
CE  
(最新)
AC  
(最初)
実行時間 -
コード長 2,886 bytes
コンパイル時間 1,218 ms
コンパイル使用メモリ 76,948 KB
最終ジャッジ日時 2024-11-14 19:31:50
合計ジャッジ時間 1,671 ms
ジャッジサーバーID
(参考情報)
judge1 / judge5
このコードへのチャレンジ
(要ログイン)
コンパイルエラー時のメッセージ・ソースコードは、提出者また管理者しか表示できないようにしております。(リジャッジ後のコンパイルエラーは公開されます)
ただし、clay言語の場合は開発者のデバッグのため、公開されます。

コンパイルメッセージ
/home/judge/data/code/Main.nim(18, 18) Error: type mismatch
Expression: <624
  [1] 624: int

Expected one of (first mismatch at [position]):
[1] proc `<`(a, b: DateTime): bool
[1] proc `<`(a, b: Duration): bool
[1] proc `<`(a, b: Time): bool
[1] proc `<`(x, y: bool): bool
[1] proc `<`(x, y: char): bool
[1] proc `<`(x, y: float): bool
[1] proc `<`(x, y: float32): bool
[1] proc `<`(x, y: int16): bool
[1] proc `<`(x, y: int32): bool
[1] proc `<`(x, y: int8): bool
[1] proc `<`(x, y: pointer): bool
[1] proc `<`(x, y: string): bool
[1] proc `<`(x, y: uint): bool
[1] proc `<`(x, y: uint16): bool
[1] proc `<`(x, y: uint32): bool
[1] proc `<`(x, y: uint64): bool
[1] proc `<`(x, y: uint8): bool
[1] proc `<`[A](s, t: HashSet[A]): bool
[1] proc `<`[Enum: enum](x, y: Enum): bool
[1] proc `<`[T: tuple](x, y: T): bool
[1] proc `<`[T](x, y: ptr T): bool
[1] proc `<`[T](x, y: ref T): bool
[1] proc `<`[T](x, y: set[T]): bool
[2] proc `<`(x, y: int): bool
[2] proc `<`(x, y: int64): bool

ソースコード

diff #

import strutils, sequtils, math, sets, times

var start = cpuTime()

const
  N: int = 624
  M: int = 397
  MATRIX_A:   cuint = 0x9908b0df.cuint
  UPPER_MASK: cuint = 0x80000000.cuint
  LOWER_MASK: cuint = 0x7fffffff.cuint

var
  mt = newSeq[cuint](0)
  mti: int = N + 1

proc init_genrand(s: cuint) =
  mt.add(s and 0xffffffff.cuint)
  for mti in 1.. <N:
    mt.add(1812433253.cuint * (mt[mti-1] xor (mt[mti-1] shr 30)).cuint + mti.cuint)
    mt[mti] = mt[mti] and 0xffffffff.cuint

proc init_by_array(init_key: seq[cuint]) =
  var key_length = init_key.len
  init_genrand(19921223)
  var
    i = 1
    j = 0
    k = if N > key_length: N else: key_length
  while k > 0:
    mt[i] = (mt[i] xor ((mt[i-1] xor (mt[i-1] shr 30)) * 1664525.cuint)) + init_key[j].cuint + j.cuint
    mt[i] = mt[i] and 0xffffffff.cuint
    i += 1
    j += 1
    if i >= N:
      mt[0] = mt[N-1]
      i = 1
    if j >= key_length:
      j = 0
    k -= 1
  for k in countdown(N-1, 1):
    mt[i] = (mt[i] xor ((mt[i-1] xor (mt[i-1] shr 30)) * 1566083941.cuint)) - i.cuint
    mt[i] = mt[i] and 0xffffffff.cuint
    i += 1
    if i >= N:
      mt[0] = mt[N-1]
      i = 1
  mt[0] = 0x80000000.cuint

proc genrand_int32():cuint =
  var y: cuint
  var mag01 = newSeq[cuint](2)
  mag01[0] = 0x0
  mag01[1] = MATRIX_A
  if mti.int >= N:
    if mti == N+1:
      init_genrand(5489)
    for kk in 0.. N-M-1:
      y = (mt[kk] and UPPER_MASK) or (mt[kk+1] and LOWER_MASK)
      mt[kk] = mt[kk+M] xor (y shr 1) xor mag01[(y and 0x1).int]
    for kk in N-M.. N-2:
      y = (mt[kk] and UPPER_MASK) or (mt[kk+1] and LOWER_MASK)
      mt[kk] = mt[kk+(M-N)] xor (y shr 1) xor mag01[(y and 0x1).int]
    y = (mt[N-1] and UPPER_MASK) or (mt[0] and LOWER_MASK)
    mt[N-1] = mt[M-1] xor (y shr 1) xor mag01[(y and 0x1).int]
    mti = 0
  y = mt[mti.int]
  mti += 1
  y = y xor (y shr 11)
  y = y xor (y shl 7) and 0x9d2c5680.cuint
  y = y xor (y shl 15) and 0xefc60000.cuint
  y = y xor (y shr 18)
  return y

proc genrand_int31():int =
  return (genrand_int32() shr 1).int

proc myrand:int = return genrand_int31()

proc shuffle*(arr: var seq) =
    var koko: int = arr.len
    for i in 0.. <koko:
        let j = genrand_int31() mod koko
        swap arr[i], arr[j]

proc shuffled*(arr: var seq):seq =
    result = arr
    shuffle(result)

###
var init = newSeq[cuint](0)
init.add(1234)
init.add(2345)
init.add(3456)
init.add(7809)
init.add(1131)
init.add(epochTime().cuint)
init_by_array(init)

var
  n = stdin.readLine.parseInt
  a = stdin.readLine.split.map(parseInt)
  b = stdin.readLine.split.map(parseInt)
  check: int = 0
  all:   int = 0

while cpuTime() - start < 4.8:
  all += 1
  var A = shuffled(a)
  var B = shuffled(b)
  var
    win:  int = 0
    lose: int = 0
  for ele in zip(A, B):
    if ele.a > ele.b:
      win += 1
    elif ele.a < ele.b:
      lose += 1
  if win > lose:
    check += 1

echo check / all
0