Submission #156176


Source Code Expand

{-# LANGUAGE BangPatterns #-}

import           Control.Applicative
import           Control.Monad
import qualified Data.ByteString.Char8 as S
import           Data.List
import           Data.Maybe
import           Text.Printf
import Data.Vector.Generic ((!))
import qualified Data.Vector as V
import qualified Data.Vector.Unboxed as U
import qualified Data.Vector.Unboxed.Mutable as UM
import Data.STRef

-- util

getInts :: IO [Int]
getInts = catMaybes . map (fmap fst . S.readInt) . S.words <$> S.getContents

getInt :: IO Int
getInt = fst . fromJust . S.readInt <$> S.getLine

-- main

main :: IO ()
main = do
  n <- getInt
  ns <- getInts
  print $ n + 1 - lcs ns

lcs :: [Int] -> Int
lcs xs = max 1 $ U.maximum tbl where
  v = U.fromList $ 0 : xs
  n = U.length v

  tbl = U.create $ do
    r <- UM.replicate (n+1) 0
    UM.write r 0 1
    forM_ [1..n-1] $ \i -> do
      m <- newSTRef 0
      forM_ [0..i-1] $ \j -> do
        when (v!i > v!j) $ do
          p <- UM.read r j
          modifySTRef m $ max (p+1)
      UM.write r i =<< readSTRef m
    return r

{-
lcs xs = f (-1) 0 where
  v = V.fromList xs
  n = V.length v
  tbl =
    V.generate (n+1) $ \i -> do
    V.generate (n+1) $ \j -> do
      f (i-1) j

  f !prev !cur
    | cur >= n = 0
    | prev >= 0 && (v!prev) > (v!cur) = tbl!(prev+1)!(cur+1)
    | otherwise =
      max (tbl!(prev+1)!(cur+1)) (1+(tbl!(cur+1)!(cur+1)))
-}

Submission Info

Submission Time
Task D - トランプ挿入ソート
User tanakh
Language Haskell (GHC 7.4.1)
Score 50
Code Size 1458 Byte
Status TLE
Exec Time 2032 ms
Memory 4636 KB

Judge Result

Set Name smallA smallB all
Score / Max Score 10 / 10 40 / 40 0 / 50
Status
AC × 19
AC × 37
AC × 42
TLE × 13
Set Name Test Cases
smallA test_01_ABC.txt, test_04_ABC.txt, test_07_ABC.txt, test_10_ABC.txt, test_13_ABC.txt, test_16_ABC.txt, test_19_ABC.txt, test_22_ABC.txt, test_25_ABC.txt, test_28_ABC.txt, test_31_ABC.txt, test_32_ABC.txt, test_35_ABC.txt, test_38_ABC.txt, test_41_ABC.txt, test_44_ABC.txt, test_47_ABC.txt, test_50_ABC.txt, test_53_ABC.txt
smallB test_01_ABC.txt, test_02_AB.txt, test_04_ABC.txt, test_05_AB.txt, test_07_ABC.txt, test_08_AB.txt, test_10_ABC.txt, test_11_AB.txt, test_13_ABC.txt, test_14_AB.txt, test_16_ABC.txt, test_17_AB.txt, test_19_ABC.txt, test_20_AB.txt, test_22_ABC.txt, test_23_AB.txt, test_25_ABC.txt, test_26_AB.txt, test_28_ABC.txt, test_29_AB.txt, test_31_ABC.txt, test_32_ABC.txt, test_33_AB.txt, test_35_ABC.txt, test_36_AB.txt, test_38_ABC.txt, test_39_AB.txt, test_41_ABC.txt, test_42_AB.txt, test_44_ABC.txt, test_45_AB.txt, test_47_ABC.txt, test_48_AB.txt, test_50_ABC.txt, test_51_AB.txt, test_53_ABC.txt, test_54_AB.txt
all test_01_ABC.txt, test_02_AB.txt, test_03_A.txt, test_04_ABC.txt, test_05_AB.txt, test_06_A.txt, test_07_ABC.txt, test_08_AB.txt, test_09_A.txt, test_10_ABC.txt, test_11_AB.txt, test_12_A.txt, test_13_ABC.txt, test_14_AB.txt, test_15_A.txt, test_16_ABC.txt, test_17_AB.txt, test_18_A.txt, test_19_ABC.txt, test_20_AB.txt, test_21_A.txt, test_22_ABC.txt, test_23_AB.txt, test_24_A.txt, test_25_ABC.txt, test_26_AB.txt, test_27_A.txt, test_28_ABC.txt, test_29_AB.txt, test_30_A.txt, test_31_ABC.txt, test_32_ABC.txt, test_33_AB.txt, test_34_A.txt, test_35_ABC.txt, test_36_AB.txt, test_37_A.txt, test_38_ABC.txt, test_39_AB.txt, test_40_A.txt, test_41_ABC.txt, test_42_AB.txt, test_43_A.txt, test_44_ABC.txt, test_45_AB.txt, test_46_A.txt, test_47_ABC.txt, test_48_AB.txt, test_49_A.txt, test_50_ABC.txt, test_51_AB.txt, test_52_A.txt, test_53_ABC.txt, test_54_AB.txt, test_55_A.txt
Case Name Status Exec Time Memory
sample_01.txt AC 97 ms 1176 KB
sample_02.txt AC 28 ms 1264 KB
sample_03.txt AC 28 ms 1184 KB
test_01_ABC.txt AC 28 ms 1180 KB
test_02_AB.txt AC 42 ms 1812 KB
test_03_A.txt TLE 2030 ms 4120 KB
test_04_ABC.txt AC 31 ms 1340 KB
test_05_AB.txt AC 39 ms 1824 KB
test_06_A.txt AC 165 ms 2328 KB
test_07_ABC.txt AC 27 ms 1180 KB
test_08_AB.txt AC 41 ms 1820 KB
test_09_A.txt TLE 2030 ms 4316 KB
test_10_ABC.txt AC 29 ms 1264 KB
test_11_AB.txt AC 30 ms 1688 KB
test_12_A.txt TLE 2031 ms 3744 KB
test_13_ABC.txt AC 31 ms 1184 KB
test_14_AB.txt AC 41 ms 1824 KB
test_15_A.txt TLE 2030 ms 4208 KB
test_16_ABC.txt AC 30 ms 1176 KB
test_17_AB.txt AC 33 ms 1820 KB
test_18_A.txt AC 84 ms 2212 KB
test_19_ABC.txt AC 25 ms 1308 KB
test_20_AB.txt AC 42 ms 1820 KB
test_21_A.txt TLE 2030 ms 4572 KB
test_22_ABC.txt AC 30 ms 1180 KB
test_23_AB.txt AC 39 ms 1820 KB
test_24_A.txt TLE 2030 ms 4140 KB
test_25_ABC.txt AC 30 ms 1176 KB
test_26_AB.txt AC 42 ms 1820 KB
test_27_A.txt TLE 2032 ms 4636 KB
test_28_ABC.txt AC 29 ms 1228 KB
test_29_AB.txt AC 40 ms 1820 KB
test_30_A.txt TLE 2030 ms 4512 KB
test_31_ABC.txt AC 30 ms 1184 KB
test_32_ABC.txt AC 27 ms 1176 KB
test_33_AB.txt AC 45 ms 1820 KB
test_34_A.txt TLE 2031 ms 4316 KB
test_35_ABC.txt AC 27 ms 1180 KB
test_36_AB.txt AC 39 ms 1776 KB
test_37_A.txt AC 638 ms 2588 KB
test_38_ABC.txt AC 29 ms 1244 KB
test_39_AB.txt AC 33 ms 1692 KB
test_40_A.txt TLE 2030 ms 2844 KB
test_41_ABC.txt AC 28 ms 1184 KB
test_42_AB.txt AC 30 ms 1696 KB
test_43_A.txt AC 99 ms 1820 KB
test_44_ABC.txt AC 28 ms 1240 KB
test_45_AB.txt AC 46 ms 1824 KB
test_46_A.txt TLE 2030 ms 3872 KB
test_47_ABC.txt AC 30 ms 1184 KB
test_48_AB.txt AC 30 ms 1696 KB
test_49_A.txt AC 374 ms 2544 KB
test_50_ABC.txt AC 27 ms 1240 KB
test_51_AB.txt AC 36 ms 1704 KB
test_52_A.txt TLE 2029 ms 2840 KB
test_53_ABC.txt AC 31 ms 1172 KB
test_54_AB.txt AC 29 ms 1440 KB
test_55_A.txt TLE 2031 ms 2852 KB