結果
問題 | No.5 数字のブロック |
ユーザー | highd |
提出日時 | 2016-08-16 19:53:29 |
言語 | Haskell (9.10.1) |
結果 |
CE
(最新)
AC
(最初)
|
実行時間 | - |
コード長 | 1,421 bytes |
コンパイル時間 | 263 ms |
コンパイル使用メモリ | 159,872 KB |
最終ジャッジ日時 | 2024-11-14 19:48:34 |
合計ジャッジ時間 | 880 ms |
ジャッジサーバーID (参考情報) |
judge4 / judge5 |
(要ログイン)
コンパイルエラー時のメッセージ・ソースコードは、提出者また管理者しか表示できないようにしております。(リジャッジ後のコンパイルエラーは公開されます)
ただし、clay言語の場合は開発者のデバッグのため、公開されます。
ただし、clay言語の場合は開発者のデバッグのため、公開されます。
コンパイルメッセージ
Loaded package environment from /home/judge/.ghc/x86_64-linux-9.8.2/environments/default <no location info>: warning: [GHC-98887] -XGeneralizedNewtypeDeriving is not allowed in Safe Haskell; ignoring -XGeneralizedNewtypeDeriving [1 of 2] Compiling Main ( Main.hs, Main.o ) Main.hs:11:10: error: [GHC-59692] Duplicate instance declarations: instance [safe] Monoid a => Monoid (IO a) -- Defined at Main.hs:11:10 instance Monoid a => Monoid (IO a) -- Defined in ‘GHC.Base’ | 11 | instance Monoid a => Monoid (IO a) where | ^^^^^^^^^^^^^^^^^^^^^^^^^
ソースコード
{-# LANGUAGE Safe #-} {-# LANGUAGE PatternGuards #-} import qualified Data.Text as T import qualified Data.Text.IO as TI import qualified Data.List as L import Data.Monoid import Data.Maybe import Control.Applicative import Data.Foldable instance Monoid a => Monoid (IO a) where mempty = return mempty mappend a b = mappend <$> a <*> b dropMay::Int->[a]->Maybe [a] dropMay 0 [] = Just [] dropMay _ [] = Nothing dropMay 0 list = Just list dropMay v (x:xs) = dropMay (v-1) xs (!-!)::[a]->Int->Maybe a [] !-! _ = Nothing (x:xs) !-! 0 = Just x (x:xs) !-! n = xs !-! (n-1) (<$~>)::Functor f => f a -> (a -> b) -> f b (<$~>)=flip (<$>) maybeRead s |[(x,"")]<-(reads s)=Just x |otherwise = Nothing maybeList::[Maybe Int]->Maybe [Int] maybeList [] = Just [] maybeList ((Just a):xs) = (a:) <$> (maybeList xs) maybeList (Nothing:xs) = Nothing getLines::Int->IO T.Text getLines 1 = TI.getLine getLines n = TI.getLine <> return (T.pack " ") <> (getLines$n-1) run main_f n= getLines n <$~> T.split (==' ') <$~> fmap T.unpack <$~> main_f <$~> fmap show <$~> fromMaybe "error" >>= putStrLn f l [] n sum | l < sum = n - 1 |otherwise = n f l (x:xs) n sum | l >= sum = f l xs (n+1) (sum+x) |otherwise = n - 1; main_ list = do let get n = maybeRead=<<(list !-! n)::Maybe Int l<-get 0 ws<-maybeList=<<fmap maybeRead<$>dropMay 2 list::Maybe [Int] return$f l (L.sort ws) 0 0 main = run main_ 3