Submission #3413738


Source Code Expand

import Control.Monad
import Data.Maybe
import Debug.Trace
import Data.List
import qualified Data.Map.Strict as Map
import qualified Data.IntMap.Strict as IntMap
import qualified Data.Set as Set
import qualified Data.IntSet as IntSet
import Data.Array.Unboxed
import qualified Data.ByteString.Char8 as B
import Data.Maybe (fromJust)
readInt = fst . fromJust . B.readInt
readInts = map (fst . fromJust . B.readInt) . B.words <$> B.getLine :: IO [Int]

main :: IO ()
main = do
  (a:b:_) <- fmap (map read . words) getLine :: IO [Int]
  as <- readInts
  bs <- readInts
  print $ solve a b as bs

solve :: Int -> Int -> [Int] -> [Int] -> Int
solve a b as bs = dp!(0, 0)
  where
    arraya = listArray (1, a) as :: Array Int Int
    arrayb = listArray (1, b) bs :: Array Int Int
    -- dp!(i,j)はa_i+1, b_j+1以降のカードだけが残っているときの取り得る最大得点
    dp = listArray ((0, 0), (a, b)) $ map f [ (x,y) | x <- [0..a], y <- [0..b]] :: Array (Int, Int) Int
    f :: (Int, Int) -> Int
    f (i, j)
      | i == a && j == b = 0 -- nothing left
      | i == a-1 && j == b = arraya!a
      | i == a && j == b-1 = arrayb!b
      | i == a = arrayb!(j+1) + dp!(a, j+2) -- only Bs are left
      | j == b = arraya!(i+1) + dp!(i+2, b)-- only As are left
      | i == a-1 && j == b-1 = max (arraya!a) (arrayb!b)
      | i == a-1 = max
        (arraya!a + dp!(a, j+1))
        (arrayb!(j+1) + min (dp!(a, j+1)) (dp!(a - 1, j+2)))
      | j == b - 1 = max
        (arrayb!b + dp!(i+1, b))
        (arraya!(i+1) + min (dp!(i+2, b-1)) (dp!(i+1, b)))
      | otherwise = max
        (arraya!(i+1) + min (dp!(i+2, j)) (dp!(i+1, j+1)))
        (arrayb!(j+1) + min (dp!(i, j+2)) (dp!(i+1, j+1)))

Submission Info

Submission Time
Task B - ゲーム
User utopian
Language Haskell (GHC 7.10.3)
Score 0
Code Size 1749 Byte
Status MLE
Exec Time 671 ms
Memory 285052 KB

Judge Result

Set Name All
Score / Max Score 0 / 3
Status
AC × 4
MLE × 1
Set Name Test Cases
All 00, 01, 02, 90, 91
Case Name Status Exec Time Memory
00 AC 1 ms 508 KB
01 AC 490 ms 220796 KB
02 MLE 671 ms 285052 KB
90 AC 1 ms 508 KB
91 AC 1 ms 508 KB