結果

問題 No.519 アイドルユニット
ユーザー aimyaimy
提出日時 2017-06-08 10:00:43
言語 Haskell
(9.8.2)
結果
CE  
(最新)
AC  
(最初)
実行時間 -
コード長 689 bytes
コンパイル時間 1,924 ms
コンパイル使用メモリ 149,632 KB
最終ジャッジ日時 2024-11-14 20:03:25
合計ジャッジ時間 2,372 ms
ジャッジサーバーID
(参考情報)
judge4 / judge3
このコードへのチャレンジ
(要ログイン)
コンパイルエラー時のメッセージ・ソースコードは、提出者また管理者しか表示できないようにしております。(リジャッジ後のコンパイルエラーは公開されます)
ただし、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.IntMap.Strict’.
    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.IntMap.Strict as M
  | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^

ソースコード

diff #

import qualified Data.IntMap.Strict as M
import Data.List
import Data.Bits

mapKeysValue f g = M.fromDistinctAscList . map (\(k,v) -> (f k, g v)) . M.toList

main = do
 n <- readLn
 let takeFellow = reverse . takeWhile (/=(-1)) . reverse
 fs <- concat . map (takeFellow . map read . words) . lines <$> getContents
 print (idolUnit n fs)

idolUnit n fs = (snd . M.findMax) (foldl' dp (M.singleton 0 0) units)
 where units = zip [(bit i, bit j) | i<-[0..n-1], j<-[0..n-1], i<j] fs

dp im ((bi,bj),f) =  M.filterWithKey (\k _ -> mod k bi == mod (complement 0) bi) $ M.unionWith max im $ mapKeysValue (.|. ab) (+f) im'
 where
  ab = bi .|. bj
  im' = M.filterWithKey (\k _ -> k .&. ab == 0) im
0