結果

問題 No.1993 Horse Racing
ユーザー sanao10000sanao10000
提出日時 2022-07-02 10:23:47
言語 Haskell
(9.8.2)
結果
WA  
実行時間 -
コード長 4,934 bytes
コンパイル時間 6,611 ms
コンパイル使用メモリ 243,376 KB
実行使用メモリ 8,456 KB
最終ジャッジ日時 2023-08-18 01:28:05
合計ジャッジ時間 6,477 ms
ジャッジサーバーID
(参考情報)
judge15 / judge11
このコードへのチャレンジ(β)

テストケース

テストケース表示
入力 結果 実行時間
実行使用メモリ
testcase_00 WA -
testcase_01 WA -
testcase_02 AC 3 ms
7,772 KB
testcase_03 AC 3 ms
7,920 KB
testcase_04 WA -
testcase_05 WA -
testcase_06 WA -
testcase_07 AC 3 ms
7,868 KB
testcase_08 WA -
testcase_09 AC 3 ms
7,992 KB
testcase_10 WA -
testcase_11 WA -
testcase_12 WA -
testcase_13 WA -
testcase_14 WA -
testcase_15 WA -
testcase_16 WA -
testcase_17 WA -
testcase_18 WA -
testcase_19 WA -
testcase_20 WA -
testcase_21 WA -
testcase_22 WA -
testcase_23 WA -
testcase_24 WA -
testcase_25 WA -
testcase_26 WA -
権限があれば一括ダウンロードができます
コンパイルメッセージ
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

ソースコード

diff #

{-# 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 0 1000.0 1000.0
  where
    solve' :: [Double] -> Double -> Double -> Double -> Double
    solve' [] ans _ _ = ans
    solve' (a:as) ans dist rest = solve' as (ans+a*(rest/dist)) dist (dist-ans)

-- ==================================================================


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
-- ============================================================================================================================================================
0