Submission #37463904
Source Code Expand
#!/usr/bin/env stack
{- stack script --resolver lts-16.11
--package array --package bytestring --package containers
--package vector --package vector-algorithms --package primitive --package transformers
-}
{- ORMOLU_DISABLE -}
{-# LANGUAGE BangPatterns, BlockArguments, LambdaCase, MultiWayIf, PatternGuards, TupleSections #-}
{-# LANGUAGE NumDecimals, NumericUnderscores #-}
{-# LANGUAGE FlexibleInstances, MultiParamTypeClasses, ScopedTypeVariables, TypeApplications #-}
{-# LANGUAGE TypeFamilies #-}
{-# LANGUAGE FlexibleContexts #-}
{- ORMOLU_ENABLE -}
-- {{{ Imports
module Main (main) where
import Control.Monad
import Data.Char
import Data.List
{- ORMOLU_DISABLE -}
-- array
import Data.Array.IArray
import Data.Array.IO
import Data.Array.MArray
import Data.Array.ST
import Data.Array.Unsafe
import qualified Data.Array as A
import qualified Data.Array.Unboxed as AU
-- bytestring: https://www.stackage.org/lts-16.11/package/bytestring-0.10.10.0
import qualified Data.ByteString.Char8 as BS
-- vector: https://www.stackage.org/lts-16.11/package/vector-0.12.1.2
import qualified Data.Vector.Unboxed as VU
{- ORMOLU_ENABLE -}
getLineIntList :: IO [Int]
getLineIntList = unfoldr (BS.readInt . BS.dropWhile isSpace) <$> BS.getLine
main :: IO ()
main = do
[nItems, wLimit] <- getLineIntList
wvs <- VU.replicateM nItems $ (\[a, b] -> (a, b)) <$> getLineIntList
let dp = runSTUArray $ do
let rng = ((0, 0), (nItems, wLimit))
arr <- newArray rng (0 :: Int)
forM_ (range rng) $ \(i, w) -> do
e <- if w == 0 || i == 0
then return 0
else do
let wv = wvs VU.! (i - 1)
v1 <- readArray arr (i - 1, w)
v2 <- if w - fst wv >= 0 then (snd wv +) <$> readArray arr (i - 1, w - fst wv) else return 0
return $ max v1 v2
writeArray arr (i, w) e
return arr
print $ maximum [dp ! (nItems, w) | w <- [0..wLimit]]
Submission Info
| Submission Time |
|
| Task |
A19 - Knapsack 1 |
| User |
toyboot4e |
| Language |
Haskell (GHC 8.8.3) |
| Score |
1000 |
| Code Size |
1929 Byte |
| Status |
AC |
| Exec Time |
174 ms |
| Memory |
83788 KiB |
Compile Error
Loaded package environment from /home/contestant/.ghc/x86_64-linux-8.8.3/environments/default
Judge Result
| Set Name |
Sample |
All |
| Score / Max Score |
0 / 0 |
1000 / 1000 |
| Status |
|
|
| Set Name |
Test Cases |
| Sample |
sample_01.txt, sample_02.txt, sample_03.txt |
| All |
in01.txt, in02.txt, in03.txt, in04.txt, in05.txt, in06.txt, in07.txt, in08.txt, in09.txt, in10.txt, in11.txt, in12.txt, in13.txt, in14.txt, in15.txt, in16.txt, in17.txt, in18.txt, in19.txt, in20.txt, in21.txt, in22.txt, sample_01.txt, sample_02.txt, sample_03.txt |
| Case Name |
Status |
Exec Time |
Memory |
| in01.txt |
AC |
12 ms |
6280 KiB |
| in02.txt |
AC |
32 ms |
13372 KiB |
| in03.txt |
AC |
26 ms |
13180 KiB |
| in04.txt |
AC |
29 ms |
13344 KiB |
| in05.txt |
AC |
23 ms |
13300 KiB |
| in06.txt |
AC |
28 ms |
13336 KiB |
| in07.txt |
AC |
166 ms |
83788 KiB |
| in08.txt |
AC |
164 ms |
83620 KiB |
| in09.txt |
AC |
163 ms |
83692 KiB |
| in10.txt |
AC |
162 ms |
83560 KiB |
| in11.txt |
AC |
164 ms |
83660 KiB |
| in12.txt |
AC |
174 ms |
83748 KiB |
| in13.txt |
AC |
173 ms |
83564 KiB |
| in14.txt |
AC |
173 ms |
83784 KiB |
| in15.txt |
AC |
173 ms |
83688 KiB |
| in16.txt |
AC |
173 ms |
83592 KiB |
| in17.txt |
AC |
28 ms |
13248 KiB |
| in18.txt |
AC |
28 ms |
13344 KiB |
| in19.txt |
AC |
27 ms |
13332 KiB |
| in20.txt |
AC |
165 ms |
83668 KiB |
| in21.txt |
AC |
162 ms |
83624 KiB |
| in22.txt |
AC |
163 ms |
83560 KiB |
| sample_01.txt |
AC |
2 ms |
3572 KiB |
| sample_02.txt |
AC |
2 ms |
3640 KiB |
| sample_03.txt |
AC |
2 ms |
3736 KiB |