結果
問題 | No.184 たのしい排他的論理和(HARD) |
ユーザー | e_gracilis |
提出日時 | 2015-06-17 16:26:14 |
言語 | Haskell (9.10.1) |
結果 |
CE
(最新)
AC
(最初)
|
実行時間 | - |
コード長 | 996 bytes |
コンパイル時間 | 4,483 ms |
コンパイル使用メモリ | 154,240 KB |
最終ジャッジ日時 | 2024-11-15 04:42:50 |
合計ジャッジ時間 | 6,252 ms |
ジャッジサーバーID (参考情報) |
judge5 / judge3 |
(要ログイン)
コンパイルエラー時のメッセージ・ソースコードは、提出者また管理者しか表示できないようにしております。(リジャッジ後のコンパイルエラーは公開されます)
ただし、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:12:41: error: [GHC-87543] Ambiguous occurrence ‘B.getLine’. It could refer to either ‘B.getLine’, imported qualified from ‘Data.ByteString.Char8’ at Main.hs:4:1-43, or ‘B.getLine’, imported qualified from ‘Data.ByteString’ at Main.hs:3:1-37. | 12 | getInt = fst . fromJust . B.readInt <$> B.getLine | ^^^^^^^^^ Main.hs:14:60: error: [GHC-87543] Ambiguous occurrence ‘B.getLine’. It could refer to either ‘B.getLine’, imported qualified from ‘Data.ByteString.Char8’ at Main.hs:4:1-43, or ‘B.getLine’, imported qualified from ‘Data.ByteString’ at Main.hs:3:1-37. | 14 | getInts = map (fst . fromJust . B.readInt) <$> B.words <$> B.getLine | ^^^^^^^^^
ソースコード
import Data.Bits import qualified Data.ByteString as B import qualified Data.ByteString.Char8 as B import Control.Applicative import Data.Maybe(fromJust) import Data.List import Debug.Trace default (Int) getInt :: IO Int getInt = fst . fromJust . B.readInt <$> B.getLine getInts :: IO [Int] getInts = map (fst . fromJust . B.readInt) <$> B.words <$> B.getLine main :: IO () main = do _n <- getInt as <- getInts print $ solve $ sortBy (flip compare) as solve :: [Int] -> Int solve xs = (2^) $ length $ filter (/=0) $ sweep xs (1 `shiftL` 60) sweep :: [Int] -> Int -> [Int] sweep as 0 = as sweep [] _ = [] sweep as@(x:_) b | x .&. b == 0 = sweep as (b `shiftR` 1) | otherwise = case sweep' as b of [] -> [] p:ps -> p:sweep ps (b `shiftR` 1) sweep' :: [Int] -> Int -> [Int] sweep' [] _ = [] sweep' xs@(a:as) b | (a .&. b) == 0 = xs | otherwise = a:(sortBy (flip compare) $ map f as) where f e = if e .&. b /= 0 then e `xor` a else e