Submission #1768754


Source Code Expand

import Data.List
import Data.IORef
import Data.Array.IO
import Control.Monad

type Board = IOUArray (Int, Int) Int

-- いずれかの方向にアームを伸ばし、得点を取得
getMove :: Board -> (Int, Int) -> (Int, Int) -> Int -> IO Int
getMove board (x, y) (vx, vy) n = do
    writeArray board (x, y) 0
    rr <- readArray board (x + vx, y + vy)
    if rr == 1
        then (+) <$> return 1 <*> getMove board (x + vx, y + vy) (vx, vy) (n + 1)
        else return 0

getFullMove :: Board -> (Int, Int) -> IO Int
getFullMove board (x, y) = do
    r2 <- getMove board (x, y) (0,  1) 0
    r4 <- getMove board (x, y) (-1, 0) 0
    r6 <- getMove board (x, y) ( 1, 0) 0
    r8 <- getMove board (x, y) (0, -1) 0
    return $ 1 + r2 + r4 + r6 + r8

printBoard :: Board -> (Int, Int) -> IO ()
printBoard board (w, h) =
    forM_ [0 .. w + 1] $ \i -> do
        forM_ [0 .. h + 1] $ \j -> do
            r <- readArray board (i, j)
            putStr $ show r
        putStr "\n"

main :: IO ()
main = do
    [w,h] <- map read . words <$> getLine
    n <- readLn :: IO Int
    ts <- mapM (\_ -> map (read :: String -> Int) . words <$> getLine) [1..n]

    let list = permutations ts
    s <- forM list $ \ls -> do
        -- 得点とボードの初期化
        score <- newIORef 0
        board <- newArray ((0, 0),(w + 1, h + 1)) 0 :: IO Board
        forM_ [1 .. w] $ \i ->
            forM_ [1 .. h] $ \j ->
                writeArray board (i, j) 1
        -- 計算
        forM_ ls $ \s -> do
            r <- getFullMove board (s !! 0, s !! 1)
            modifyIORef score (+ r)
        -- printBoard board (w, h)
        readIORef score
    print $ maximum s

Submission Info

Submission Time
Task D - 金塊ゲーム
User atctk
Language Haskell (GHC 7.10.3)
Score 0
Code Size 1721 Byte
Status RE
Exec Time 4318 ms
Memory 2066172 KB

Judge Result

Set Name Sample Subtask1 Subtask2 Subtask3
Score / Max Score 0 / 0 0 / 80 0 / 19 0 / 1
Status
AC × 3
AC × 21
TLE × 2
MLE × 2
AC × 21
TLE × 27
MLE × 2
AC × 21
TLE × 39
MLE × 2
RE × 13
Set Name Test Cases
Sample sample_01.txt, sample_02.txt, sample_03.txt
Subtask1 subtask1_01.txt, subtask1_02.txt, subtask1_03.txt, subtask1_04.txt, subtask1_05.txt, subtask1_06.txt, subtask1_07.txt, subtask1_08.txt, subtask1_09.txt, subtask1_10.txt, subtask1_11.txt, subtask1_12.txt, subtask1_13.txt, subtask1_14.txt, subtask1_15.txt, subtask1_16.txt, subtask1_17.txt, subtask1_18.txt, subtask1_19.txt, subtask1_20.txt, subtask1_21.txt, subtask1_22.txt, subtask1_23.txt, subtask1_24.txt, subtask1_25.txt
Subtask2 subtask1_01.txt, subtask1_02.txt, subtask1_03.txt, subtask1_04.txt, subtask1_05.txt, subtask1_06.txt, subtask1_07.txt, subtask1_08.txt, subtask1_09.txt, subtask1_10.txt, subtask1_11.txt, subtask1_12.txt, subtask1_13.txt, subtask1_14.txt, subtask1_15.txt, subtask1_16.txt, subtask1_17.txt, subtask1_18.txt, subtask1_19.txt, subtask1_20.txt, subtask1_21.txt, subtask1_22.txt, subtask1_23.txt, subtask1_24.txt, subtask1_25.txt, subtask2_01.txt, subtask2_02.txt, subtask2_03.txt, subtask2_04.txt, subtask2_05.txt, subtask2_06.txt, subtask2_07.txt, subtask2_08.txt, subtask2_09.txt, subtask2_10.txt, subtask2_11.txt, subtask2_12.txt, subtask2_13.txt, subtask2_14.txt, subtask2_15.txt, subtask2_16.txt, subtask2_17.txt, subtask2_18.txt, subtask2_19.txt, subtask2_20.txt, subtask2_21.txt, subtask2_22.txt, subtask2_23.txt, subtask2_24.txt, subtask2_25.txt
Subtask3 subtask1_01.txt, subtask1_02.txt, subtask1_03.txt, subtask1_04.txt, subtask1_05.txt, subtask1_06.txt, subtask1_07.txt, subtask1_08.txt, subtask1_09.txt, subtask1_10.txt, subtask1_11.txt, subtask1_12.txt, subtask1_13.txt, subtask1_14.txt, subtask1_15.txt, subtask1_16.txt, subtask1_17.txt, subtask1_18.txt, subtask1_19.txt, subtask1_20.txt, subtask1_21.txt, subtask1_22.txt, subtask1_23.txt, subtask1_24.txt, subtask1_25.txt, subtask2_01.txt, subtask2_02.txt, subtask2_03.txt, subtask2_04.txt, subtask2_05.txt, subtask2_06.txt, subtask2_07.txt, subtask2_08.txt, subtask2_09.txt, subtask2_10.txt, subtask2_11.txt, subtask2_12.txt, subtask2_13.txt, subtask2_14.txt, subtask2_15.txt, subtask2_16.txt, subtask2_17.txt, subtask2_18.txt, subtask2_19.txt, subtask2_20.txt, subtask2_21.txt, subtask2_22.txt, subtask2_23.txt, subtask2_24.txt, subtask2_25.txt, subtask3_01.txt, subtask3_02.txt, subtask3_03.txt, subtask3_04.txt, subtask3_05.txt, subtask3_06.txt, subtask3_07.txt, subtask3_08.txt, subtask3_09.txt, subtask3_10.txt, subtask3_11.txt, subtask3_12.txt, subtask3_13.txt, subtask3_14.txt, subtask3_15.txt, subtask3_16.txt, subtask3_17.txt, subtask3_18.txt, subtask3_19.txt, subtask3_20.txt, subtask3_21.txt, subtask3_22.txt, subtask3_23.txt, subtask3_24.txt, subtask3_25.txt
Case Name Status Exec Time Memory
sample_01.txt AC 2 ms 508 KB
sample_02.txt AC 2 ms 508 KB
sample_03.txt AC 614 ms 186748 KB
subtask1_01.txt AC 2 ms 508 KB
subtask1_02.txt AC 2 ms 508 KB
subtask1_03.txt AC 420 ms 103804 KB
subtask1_04.txt AC 985 ms 238972 KB
subtask1_05.txt AC 2 ms 636 KB
subtask1_06.txt AC 2 ms 508 KB
subtask1_07.txt AC 3 ms 1916 KB
subtask1_08.txt AC 2 ms 508 KB
subtask1_09.txt AC 12 ms 3964 KB
subtask1_10.txt AC 2 ms 636 KB
subtask1_11.txt AC 3 ms 1532 KB
subtask1_12.txt AC 7 ms 2428 KB
subtask1_13.txt AC 26 ms 9596 KB
subtask1_14.txt AC 75 ms 20732 KB
subtask1_15.txt TLE 4269 ms 1046908 KB
subtask1_16.txt AC 1369 ms 348028 KB
subtask1_17.txt AC 1645 ms 442748 KB
subtask1_18.txt AC 719 ms 195964 KB
subtask1_19.txt AC 407 ms 105852 KB
subtask1_20.txt AC 402 ms 104828 KB
subtask1_21.txt AC 1844 ms 445820 KB
subtask1_22.txt MLE 2743 ms 818556 KB
subtask1_23.txt AC 890 ms 223612 KB
subtask1_24.txt MLE 3899 ms 780668 KB
subtask1_25.txt TLE 4294 ms 1405308 KB
subtask2_01.txt TLE 4299 ms 1507324 KB
subtask2_02.txt TLE 4295 ms 1474556 KB
subtask2_03.txt TLE 4293 ms 1435004 KB
subtask2_04.txt TLE 4318 ms 1576572 KB
subtask2_05.txt TLE 4279 ms 1223676 KB
subtask2_06.txt TLE 4293 ms 1458300 KB
subtask2_07.txt TLE 4300 ms 1511420 KB
subtask2_08.txt TLE 4294 ms 1454332 KB
subtask2_09.txt TLE 4296 ms 1420796 KB
subtask2_10.txt TLE 4283 ms 1242108 KB
subtask2_11.txt TLE 4295 ms 1477116 KB
subtask2_12.txt TLE 4281 ms 1240828 KB
subtask2_13.txt TLE 4298 ms 1532284 KB
subtask2_14.txt TLE 4312 ms 1597692 KB
subtask2_15.txt TLE 4291 ms 1416956 KB
subtask2_16.txt TLE 4298 ms 1475836 KB
subtask2_17.txt TLE 4292 ms 1453052 KB
subtask2_18.txt TLE 4297 ms 1454972 KB
subtask2_19.txt TLE 4304 ms 1599228 KB
subtask2_20.txt TLE 4290 ms 1400956 KB
subtask2_21.txt TLE 4293 ms 1460092 KB
subtask2_22.txt TLE 4276 ms 1185660 KB
subtask2_23.txt TLE 4281 ms 1224188 KB
subtask2_24.txt TLE 4290 ms 1378300 KB
subtask2_25.txt TLE 4297 ms 1464956 KB
subtask3_01.txt RE 1 ms 380 KB
subtask3_02.txt RE 1 ms 380 KB
subtask3_03.txt TLE 4285 ms 1563004 KB
subtask3_04.txt TLE 4283 ms 1225468 KB
subtask3_05.txt TLE 4291 ms 1468796 KB
subtask3_06.txt RE 1 ms 508 KB
subtask3_07.txt TLE 4249 ms 1694076 KB
subtask3_08.txt TLE 4265 ms 1782396 KB
subtask3_09.txt RE 2 ms 508 KB
subtask3_10.txt TLE 4283 ms 2066172 KB
subtask3_11.txt RE 2 ms 508 KB
subtask3_12.txt TLE 4208 ms 479612 KB
subtask3_13.txt RE 1 ms 508 KB
subtask3_14.txt TLE 4292 ms 2028668 KB
subtask3_15.txt TLE 4257 ms 1918204 KB
subtask3_16.txt TLE 4289 ms 2064764 KB
subtask3_17.txt RE 2 ms 508 KB
subtask3_18.txt TLE 4267 ms 2063740 KB
subtask3_19.txt RE 2 ms 508 KB
subtask3_20.txt TLE 4298 ms -2030084 KB
subtask3_21.txt RE 2 ms 508 KB
subtask3_22.txt RE 2 ms 508 KB
subtask3_23.txt RE 2 ms 508 KB
subtask3_24.txt RE 2 ms 508 KB
subtask3_25.txt RE 2 ms 508 KB