結果

問題 No.649 ここでちょっとQK!
ユーザー sirji kerfa 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言語の場合は開発者のデバッグのため、公開されます。

コンパイルメッセージ
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
  | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^

ソースコード

diff #

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
0