結果
問題 | No.1993 Horse Racing |
ユーザー | sanao10000 |
提出日時 | 2022-07-02 10:40:24 |
言語 | Haskell (9.8.2) |
結果 |
AC
|
実行時間 | 4 ms / 2,000 ms |
コード長 | 4,852 bytes |
コンパイル時間 | 11,768 ms |
コンパイル使用メモリ | 244,204 KB |
実行使用メモリ | 8,320 KB |
最終ジャッジ日時 | 2023-08-18 01:45:24 |
合計ジャッジ時間 | 13,178 ms |
ジャッジサーバーID (参考情報) |
judge13 / judge14 |
(要ログイン)
テストケース
テストケース表示入力 | 結果 | 実行時間 実行使用メモリ |
---|---|---|
testcase_00 | AC | 3 ms
7,872 KB |
testcase_01 | AC | 3 ms
7,900 KB |
testcase_02 | AC | 2 ms
7,676 KB |
testcase_03 | AC | 3 ms
7,884 KB |
testcase_04 | AC | 2 ms
7,880 KB |
testcase_05 | AC | 3 ms
7,864 KB |
testcase_06 | AC | 3 ms
7,900 KB |
testcase_07 | AC | 3 ms
7,980 KB |
testcase_08 | AC | 4 ms
8,020 KB |
testcase_09 | AC | 3 ms
8,064 KB |
testcase_10 | AC | 3 ms
8,276 KB |
testcase_11 | AC | 4 ms
8,312 KB |
testcase_12 | AC | 3 ms
8,180 KB |
testcase_13 | AC | 3 ms
8,040 KB |
testcase_14 | AC | 3 ms
8,108 KB |
testcase_15 | AC | 3 ms
8,320 KB |
testcase_16 | AC | 3 ms
8,180 KB |
testcase_17 | AC | 3 ms
8,124 KB |
testcase_18 | AC | 3 ms
8,152 KB |
testcase_19 | AC | 3 ms
8,308 KB |
testcase_20 | AC | 3 ms
8,160 KB |
testcase_21 | AC | 3 ms
8,064 KB |
testcase_22 | AC | 3 ms
8,156 KB |
testcase_23 | AC | 3 ms
8,200 KB |
testcase_24 | AC | 3 ms
7,984 KB |
testcase_25 | AC | 3 ms
8,192 KB |
testcase_26 | AC | 3 ms
7,896 KB |
コンパイルメッセージ
Loaded package environment from /home/judge/.ghc/x86_64-linux-9.6.1/environments/default [1 of 2] Compiling Main ( Main.hs, Main.o ) [2 of 2] Linking a.out
ソースコード
{-# LANGUAGE BangPatterns , BlockArguments ,FlexibleContexts ,FlexibleInstances ,OverloadedStrings ,TypeApplications ,MultiParamTypeClasses ,TupleSections #-} {-# OPTIONS_GHC -Wno-missing-methods #-} {-# OPTIONS_GHC -Wno-unrecognised-pragmas #-} import Control.Monad (replicateM,forM_,when,(<=<)) import Data.Maybe (fromJust) import Data.Array.IO(IOUArray,IOArray) import Data.Array.Unboxed(UArray,Ix) import qualified Data.Array.MArray as MA import qualified Data.Array.IArray as A import qualified Data.ByteString.Char8 as BS import qualified Data.Set as S import qualified Data.Map as Map import qualified Data.Sequence as Seq import Data.IORef import Control.Monad.ST import qualified Data.Vector.Unboxed as VU import qualified Data.Vector.Unboxed.Mutable as VUM import qualified Data.Vector.Generic as VG import qualified Data.IntMap as IM import Data.List(sort) import qualified Control.Monad.Trans.State as MTS import Control.Monad.State import qualified Data.Foldable as F -- ================================================================== main :: IO () main = do x <- input @Int as <- input @[Double] print $ solve as solve :: [Double] -> Double solve as = solve' as 1.0 1000.0 where solve' [] x dist = dist-dist*x solve' (a:as) x dist = solve' as (x*(dist-a)/dist)dist -- ================================================================== swapArray :: (MA.MArray a e m, Ix i) => a i e -> i -> i -> m () swapArray a i j = do ai <- MA.readArray a i aj <- MA.readArray a j MA.writeArray a i aj MA.writeArray a j ai initUG :: Int -> [[Int]] -> A.Array Int [Int] initUG n xs = A.accumArray (flip (:)) [] (0, n-1) $ concatMap (\[a, b] -> [(a, b), (b, a)]) xs seqfront :: Seq.ViewL a -> a seqfront(a Seq.:< b) = a seqpop :: Seq.ViewL a -> Seq.Seq a seqpop(a Seq.:< b) = b modifyArray :: (MA.MArray a e m, Ix i) => a i e -> i -> (e -> e) -> m () modifyArray !a !i !f = MA.writeArray a i . f =<< MA.readArray a i {-# INLINE modifyArray #-} type Bs = BS.ByteString type Height = Int type Width = Int type MutableArray2D any = IOUArray (Height,Width) any type Array2D any = UArray (Height, Width) any -- 初期化DP配列==================================================== class DPArray a where initDP :: Height -> Width -> a -> IO(MutableArray2D a) instance DPArray Int where initDP = ((MA.newArray . ((0, 0) ,)) .) . (. subtract 1) . (,) . subtract 1 instance DPArray Double where initDP = ((MA.newArray . ((0, 0) ,)) .) . (. subtract 1) . (,) . subtract 1 instance DPArray Bool where initDP = ((MA.newArray . ((0, 0) ,)) .) . (. subtract 1) . (,) . subtract 1 -- ================================================================= -- 入力 ===================================================================================================================================================== class (Read a) => Input a where read' :: BS.ByteString -> a readArray2D :: Height -> Width -> BS.ByteString -> a input :: Input a => IO a input = read' <$> BS.getLine inputs :: Input a => IO a inputs = read' <$> BS.getContents inputArray :: Input a => Int -> Int -> IO a inputArray = flip flip BS.getContents . ((<$>) .) . readArray2D instance Input Bs where read' = id instance Input Int where read' = fst . fromJust . BS.readInt instance Input Integer where read' = (read @Integer) . BS.unpack instance Input Double where read' = read . BS.unpack instance Input [Bs] where read' = BS.words instance Input [Int] where read' = map (fst . fromJust . BS.readInt) . BS.words instance Input [Double] where read' = map ((read @Double) . BS.unpack) . BS.words instance Input [(Int, Bs)] where read' = map ((\[a, b] -> (fst (fromJust (BS.readInt a)), b)) . BS.words) . BS.lines instance Input [(Bs, Int)] where read' = map ((\[a, b] -> (a, fst (fromJust (BS.readInt b)))) . BS.words) . BS.lines instance Input [[Bs]] where read' = map BS.words . BS.lines instance Input [[Int]] where read' = map (map (fst . fromJust . BS.readInt) . BS.words) . BS.lines instance Input [[Double]] where read' = map (map ( (read @Double) . BS.unpack) . BS.words) . BS.lines instance Input (Array2D Int) where readArray2D = flip flip ((map (fst . fromJust . BS.readInt) . BS.words) <=< BS.lines) . (((.) . A.listArray . ((0, 0) ,)) .) . (. subtract 1) . (,) . subtract 1 instance Input (Array2D Double) where readArray2D height width = A.listArray ((0, 0), (height - 1, width - 1)) . concatMap (map ((read @Double) . BS.unpack) . BS.words) . BS.lines instance Input (Array2D Char) where readArray2D = flip flip (BS.unpack <=< BS.lines) . (((.) . A.listArray . ((0, 0) ,)) .) . (. subtract 1) . (,) . subtract 1 -- ============================================================================================================================================================