結果

問題 No.173 カードゲーム(Medium)
ユーザー 6soukiti296soukiti29
提出日時 2018-02-09 00:11:39
言語 Nim
(2.0.0)
結果
CE  
(最新)
AC  
(最初)
実行時間 -
コード長 1,609 bytes
コンパイル時間 1,419 ms
コンパイル使用メモリ 69,904 KB
最終ジャッジ日時 2023-09-12 16:12:01
合計ジャッジ時間 1,766 ms
ジャッジサーバーID
(参考情報)
judge12 / judge13
このコードへのチャレンジ(β)
コンパイルエラー時のメッセージ・ソースコードは、提出者また管理者しか表示できないようにしております。(リジャッジ後のコンパイルエラーは公開されます)
ただし、clay言語の場合は開発者のデバッグのため、公開されます。

コンパイルメッセージ
/home/judge/data/code/Main.nim(23, 16) Error: undeclared identifier: 'random'
candidates (edit distance, scope distance); see '--spellSuggest': 
 (0, 8): 'random' [module declared in /home/judge/data/code/Main.nim(1, 26)]

ソースコード

diff #

import sequtils,strutils,random,algorithm,math
var
    N : int
    P : seq[float64]
    l1 = stdin.readline.split
    va : int
    C : array[2, seq[int]]
N = l1[0].parseInt
P = l1[1..2].map(parsefloat)
C[0] = stdin.readline.split.map(parseInt)
C[1] = stdin.readline.split.map(parseInt)
for i in 0..1:
    C[i].sort(system.cmp)
randomize()
proc main : bool=
    var
        F : array[2,array[20, bool]]
        c : array[2, int]
        cnt : int
        
    for n in 1..<N:
        for i in 0..1:
            if random(1.0) <= P[i]:
                for j in 0..<N:
                    if F[i][j] == false:
                        c[i] = C[i][j]
                        F[i][j] = true
                        break
            else:
                var
                    c2 = newSeq[int](0)
                    t : bool
                for j in 0..<N:
                    if F[i][j] == false and t:
                        c2.add(C[i][j])
                    elif F[i][j] == false:
                        t = true
                c[i] = random(c2)
                for j in 0..<N:
                    if c[i] == C[i][j]:
                        F[i][j] = true
                        break
        #echo c[0..1]
        if c[0] > c[1]:
            cnt += c[0] + c[1]
        else:
            cnt -= c[0] + c[1]
    for i in 0..1:
        for j in 0..<N:
            if F[i][j] == false:
                c[i] = C[i][j]
    if c[0] > c[1]:
        cnt += c[0] + c[1]
    else:
        cnt -= c[0] + c[1]
    if cnt > 0:
        return true

for n in 1..100000:
    if main():
        va += 1
echo va / 100000
0