Submission #19236667


Source Code Expand

{-# LANGUAGE DatatypeContexts #-}
import           Control.Exception           (assert)
import           Control.Monad
import           Control.Monad.Primitive
import qualified Control.Monad.ST            as ST
import qualified Data.Array.IO               as IO
import qualified Data.Array.ST               as ST
import qualified Data.Array.Unboxed          as A
import           Data.Bits
import qualified Data.ByteString.Char8       as BS
import           Data.Char
import           Data.Foldable
import           Data.List
import qualified Data.Map.Strict             as Map
import           Data.Maybe
import qualified Data.Sequence               as Seq
import qualified Data.Set                    as Set
import qualified Data.Vector                 as VB
import qualified Data.Vector.Mutable         as VBM
import qualified Data.Vector.Unboxed         as V
import           Data.Vector.Unboxed.Base
import qualified Data.Vector.Unboxed.Mutable as VM
import           Debug.Trace

readInt = fst . fromJust . BS.readInt
readIntList = map readInt . BS.words
getInt = readInt <$> BS.getLine
getIntList = readIntList <$> BS.getLine
getIntVec n = V.unfoldrN n (BS.readInt . BS.dropWhile isSpace) <$> BS.getLine

readInteger = fst . fromJust . BS.readInteger
readIntegerList = map readInteger . BS.words
getInteger = readInteger <$> BS.getLine
getIntegerList = readIntegerList <$> BS.getLine

inf :: Int
inf = 10^18

main = do
  w <- getInt
  [n, k] <- getIntList
  abs <- V.replicateM n $ do
    [a, b] <- getIntList
    return (a, b)

  dp <- IO.newArray ((0,0,0),(w,k,n)) 0 :: IO (IO.IOUArray (Int,Int,Int) Int)
  mx <- VM.new 1
  VM.set mx (0::Int)

  let writeDp :: (Int, Int, Int) -> Int -> IO ()
      writeDp (i, j, k) v = do
        IO.writeArray dp (i, j, k) v
        t <- VM.read mx 0
        VM.write mx 0 (max t v)

  forM_ [0..w] $ \i -> do
    forM_ [0..k] $ \j -> do
      forM_ [1..n] $ \k -> do
        let (a, b) = abs V.! (k-1)
        t1 <- IO.readArray dp (i, j, k-1)
        if i >= a && j >= 1
          then do t2 <- IO.readArray dp (i-a, j-1, k-1)
                  writeDp (i, j, k) (max t1 (t2 + b))
          else do writeDp (i, j, k) t1

  ans <- VM.read mx 0
  print ans

Submission Info

Submission Time
Task D - 高橋くんの苦悩
User unnohideyuki
Language Haskell (GHC 8.8.3)
Score 100
Code Size 2269 Byte
Status AC
Exec Time 630 ms
Memory 207972 KiB

Compile Error

Loaded package environment from /home/contestant/.ghc/x86_64-linux-8.8.3/environments/default

Main.hs:1:14: warning:
    -XDatatypeContexts is deprecated: It was widely considered a misfeature, and has been removed from the Haskell language.
  |
1 | {-# LANGUAGE DatatypeContexts #-}
  |              ^^^^^^^^^^^^^^^^

Judge Result

Set Name All
Score / Max Score 100 / 100
Status
AC × 47
Set Name Test Cases
All sample_01.txt, sample_02.txt, sample_03.txt, sample_01.txt, sample_02.txt, sample_03.txt, test_01.txt, test_02.txt, test_03.txt, test_04.txt, test_05.txt, test_06.txt, test_07.txt, test_08.txt, test_09.txt, test_10.txt, test_11.txt, test_12.txt, test_13.txt, test_14.txt, test_15.txt, test_16.txt, test_17.txt, test_18.txt, test_19.txt, test_20.txt, test_21.txt, test_22.txt, test_23.txt, test_24.txt, test_25.txt, test_26.txt, test_27.txt, test_28.txt, test_29.txt, test_30.txt, test_31.txt, test_32.txt, test_33.txt, test_34.txt, test_35.txt, test_36.txt, test_37.txt, test_38.txt, test_39.txt, test_40.txt, test_41.txt
Case Name Status Exec Time Memory
sample_01.txt AC 5 ms 3648 KiB
sample_02.txt AC 2 ms 3712 KiB
sample_03.txt AC 2 ms 3716 KiB
test_01.txt AC 561 ms 207936 KiB
test_02.txt AC 31 ms 12224 KiB
test_03.txt AC 3 ms 3784 KiB
test_04.txt AC 6 ms 4548 KiB
test_05.txt AC 3 ms 4000 KiB
test_06.txt AC 2 ms 3808 KiB
test_07.txt AC 17 ms 8284 KiB
test_08.txt AC 9 ms 4236 KiB
test_09.txt AC 15 ms 5896 KiB
test_10.txt AC 20 ms 9840 KiB
test_11.txt AC 16 ms 7436 KiB
test_12.txt AC 7 ms 4820 KiB
test_13.txt AC 7 ms 4904 KiB
test_14.txt AC 8 ms 4484 KiB
test_15.txt AC 507 ms 207968 KiB
test_16.txt AC 7 ms 4760 KiB
test_17.txt AC 498 ms 203984 KiB
test_18.txt AC 436 ms 155984 KiB
test_19.txt AC 10 ms 4536 KiB
test_20.txt AC 433 ms 152408 KiB
test_21.txt AC 133 ms 56592 KiB
test_22.txt AC 3 ms 3688 KiB
test_23.txt AC 126 ms 52540 KiB
test_24.txt AC 605 ms 207816 KiB
test_25.txt AC 8 ms 4884 KiB
test_26.txt AC 598 ms 203876 KiB
test_27.txt AC 13 ms 7512 KiB
test_28.txt AC 2 ms 3684 KiB
test_29.txt AC 14 ms 7076 KiB
test_30.txt AC 258 ms 96376 KiB
test_31.txt AC 3 ms 3960 KiB
test_32.txt AC 255 ms 92428 KiB
test_33.txt AC 630 ms 207972 KiB
test_34.txt AC 10 ms 4696 KiB
test_35.txt AC 622 ms 204012 KiB
test_36.txt AC 442 ms 162976 KiB
test_37.txt AC 8 ms 4508 KiB
test_38.txt AC 439 ms 159480 KiB
test_39.txt AC 305 ms 128284 KiB
test_40.txt AC 4 ms 4216 KiB
test_41.txt AC 291 ms 124320 KiB