結果
問題 | No.649 ここでちょっとQK! |
ユーザー | sirji kerfa "sirkerf" |
提出日時 | 2022-10-29 17:07:09 |
言語 | Haskell (9.8.2) |
結果 |
CE
(最新)
AC
(最初)
|
実行時間 | - |
コード長 | 1,181 bytes |
コンパイル時間 | 664 ms |
コンパイル使用メモリ | 149,888 KB |
最終ジャッジ日時 | 2024-07-06 15:02:00 |
合計ジャッジ時間 | 2,916 ms |
ジャッジサーバーID (参考情報) |
judge1 / judge4 |
(要ログイン)
コンパイルエラー時のメッセージ・ソースコードは、提出者また管理者しか表示できないようにしております。(リジャッジ後のコンパイルエラーは公開されます)
ただし、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:2:1: error: [GHC-87110] Could not load module ‘Data.Set’. It is a member of the hidden package ‘containers-0.6.8’. Use -v to see a list of the files searched for. | 2 | import qualified Data.Set as S | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
ソースコード
import qualified Data.ByteString.Char8 as B import qualified Data.Set as S type Heap = S.Set (Integer, Int) main = do [_, k] <- map read . words <$> getLine qs <- map readIntegers . B.lines <$> B.getContents let hmax = S.empty let hmin = S.empty let (_, _, ans) = foldl (query k) (hmax, hmin, []) (zip qs [0..]) mapM_ print (reverse ans) query :: Int -> (Heap, Heap, [Integer]) -> ([Integer], Int) -> (Heap, Heap, [Integer]) query k (hmax, hmin, acc) ([1,x], i) | S.size hmax < k = (S.insert (x,i) hmax, hmin, acc) | x < xmax = (S.insert (x,i) hmax', S.insert (xmax,j) hmin, acc) | otherwise = (hmax, S.insert (x,i) hmin, acc) where ((xmax,j), hmax') = S.deleteFindMax hmax query k (hmax, hmin, acc) ([2], _) | S.size hmax < k = (hmax, hmin, (-1):acc) | S.null hmin = (hmax', hmin, xmax:acc) | otherwise = (S.insert (xmin,j) hmax', hmin', xmax:acc) where ((xmax, i), hmax') = S.deleteFindMax hmax ((xmin, j), hmin') = S.deleteFindMin hmin readInteger :: B.ByteString -> Integer readInteger = maybe undefined fst . B.readInteger readIntegers :: B.ByteString -> [Integer] readIntegers = map readInteger . B.words