Submission #3779072


Source Code Expand

import strutils, sequtils, algorithm, tables, math

var A, B: int
(A, B) = stdin.readLine.split.map(parseInt)

var
    aa = stdin.readLine.split.map(parseInt)
    bb = stdin.readLine.split.map(parseInt)

var memo = initTable[tuple[turn: bool, a, b: int], int]()

proc snuke(turn: bool, ai, bi: int): int =
    if memo.contains((turn, ai, bi)):
        return memo[(turn, ai, bi)]
    
    var ans: int
    if turn:
        ans = 0
        if ai < A:
            ans = max(ans, aa[ai] + snuke(false, ai + 1, bi))
        if bi < B:
            ans = max(ans, bb[bi] + snuke(false, ai, bi + 1))
    else:
        if ai == A and bi == B:
            return 0
        
        ans = 2 ^ 31
        if ai < A:
            ans = min(ans, snuke(true, ai + 1, bi))
        if bi < B:
            ans = min(ans, snuke(true, ai, bi + 1))

    
    memo[(turn, ai, bi)] = ans
    result = ans

echo snuke(true, 0, 0)

Submission Info

Submission Time
Task B - ゲーム
User shirodoni
Language Nim (0.13.0)
Score 3
Code Size 941 Byte
Status AC
Exec Time 252 ms
Memory 123640 KB

Compile Error

Hint: system [Processing]
Hint: Main [Processing]
Hint: strutils [Processing]
Hint: parseutils [Processing]
Hint: sequtils [Processing]
Hint: algorithm [Processing]
Hint: tables [Processing]
Hint: hashes [Processing]
Hint: etcpriv [Processing]
Hint: math [Processing]
Hint: times [Processing]
Hint:  [Link]
Hint: operation successful (16716 lines compiled; 2.066 sec total; 18.189MB; Release Build) [SuccessX]

Judge Result

Set Name All
Score / Max Score 3 / 3
Status
AC × 5
Set Name Test Cases
All 00, 01, 02, 90, 91
Case Name Status Exec Time Memory
00 AC 1 ms 256 KB
01 AC 144 ms 77572 KB
02 AC 252 ms 123640 KB
90 AC 1 ms 256 KB
91 AC 1 ms 256 KB