結果
| 問題 | No.506 限られたジャパリまん | 
| コンテスト | |
| ユーザー |  aimy | 
| 提出日時 | 2017-07-07 13:32:56 | 
| 言語 | Haskell (9.10.1) | 
| 結果 | 
                                CE
                                 
                            (最新) 
                                AC
                                 
                            (最初) | 
| 実行時間 | - | 
| コード長 | 1,000 bytes | 
| コンパイル時間 | 128 ms | 
| コンパイル使用メモリ | 147,712 KB | 
| 最終ジャッジ日時 | 2024-06-28 04:19:34 | 
| 合計ジャッジ時間 | 465 ms | 
| ジャッジサーバーID (参考情報) | judge1 / judge5 | 
(要ログイン)
コンパイルエラー時のメッセージ・ソースコードは、提出者また管理者しか表示できないようにしております。(リジャッジ後のコンパイルエラーは公開されます)
ただし、clay言語の場合は開発者のデバッグのため、公開されます。
            
            
            
            
            ただし、clay言語の場合は開発者のデバッグのため、公開されます。
コンパイルメッセージ
Loaded package environment from /home/judge/.ghc/x86_64-linux-9.8.2/environments/default
[1 of 2] Compiling Main             ( Main.hs, Main.o )
Main.hs:1:1: error: [GHC-87110]
    Could not load module ‘Data.Map’.
    It is a member of the hidden package ‘containers-0.6.8’.
    Use -v to see a list of the files searched for.
  |
1 | import qualified Data.Map as M
  | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
            
            ソースコード
import qualified Data.Map as M import Data.List import Control.Monad japari h w (ps,rs) = (n, (ps,rs)) where n = jmap !? (h-1,w-1) jmap = makeMap h w (map fst rs) comb :: Int -> [a] -> [[a]] comb 0 _ = [[]] comb _ [] = [] comb n (x:xs) = [x:y | y <- comb (n-1) xs] ++ comb n xs main = do [w,h,k,p] <- map read . words <$> getLine friends <- map (readFriends . words) <$> replicateM k getLine let pass = comb p friends let rest = map (friends \\) pass let combs = zip pass rest let (nmax,(ps,_)) = maximum (map (japari (h+1) (w+1)) combs) print (mod nmax modulo) if nmax == 0 then return () else mapM_ (putStrLn . snd) ps readFriends [x,y,n] = ((read y, read x), n) modulo = 10^9+7 (!?) im (i,j) | i<0 || j<0 = 0 | otherwise = im M.! (i,j) makeMap h w fs = foldl' (asum fs) M.empty [(i,j) | i<-[0..h-1], j<-[0..w-1]] asum fs acc pos@(i,j) | pos == (0,0) = M.insert pos 1 acc | elem pos fs = M.insert pos 0 acc | otherwise = M.insert pos (acc!?(i-1,j) + acc!?(i,j-1)) acc
