Submission #37463913
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 = runSTArray $ 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 |
1928 Byte |
| Status |
AC |
| Exec Time |
2466 ms |
| Memory |
597936 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 |
32 ms |
10716 KiB |
| in02.txt |
AC |
125 ms |
51632 KiB |
| in03.txt |
AC |
128 ms |
51584 KiB |
| in04.txt |
AC |
127 ms |
51372 KiB |
| in05.txt |
AC |
126 ms |
50384 KiB |
| in06.txt |
AC |
118 ms |
48252 KiB |
| in07.txt |
AC |
2143 ms |
593972 KiB |
| in08.txt |
AC |
2073 ms |
594508 KiB |
| in09.txt |
AC |
2077 ms |
594612 KiB |
| in10.txt |
AC |
2102 ms |
594588 KiB |
| in11.txt |
AC |
2123 ms |
594636 KiB |
| in12.txt |
AC |
2414 ms |
594392 KiB |
| in13.txt |
AC |
2425 ms |
597936 KiB |
| in14.txt |
AC |
2434 ms |
596952 KiB |
| in15.txt |
AC |
2466 ms |
594536 KiB |
| in16.txt |
AC |
2417 ms |
594392 KiB |
| in17.txt |
AC |
134 ms |
53568 KiB |
| in18.txt |
AC |
127 ms |
52656 KiB |
| in19.txt |
AC |
118 ms |
48556 KiB |
| in20.txt |
AC |
2058 ms |
594636 KiB |
| in21.txt |
AC |
2053 ms |
594444 KiB |
| in22.txt |
AC |
2105 ms |
594544 KiB |
| sample_01.txt |
AC |
3 ms |
3568 KiB |
| sample_02.txt |
AC |
2 ms |
3700 KiB |
| sample_03.txt |
AC |
2 ms |
3852 KiB |