結果

問題 No.649 ここでちょっとQK!
ユーザー aimyaimy
提出日時 2018-02-10 09:06:04
言語 Haskell
(9.8.2)
結果
CE  
(最新)
AC  
(最初)
実行時間 -
コード長 1,150 bytes
コンパイル時間 202 ms
コンパイル使用メモリ 149,888 KB
最終ジャッジ日時 2024-04-27 02:31:34
合計ジャッジ時間 1,080 ms
ジャッジサーバーID
(参考情報)
judge3 / judge2
このコードへのチャレンジ
(要ログイン)
コンパイルエラー時のメッセージ・ソースコードは、提出者また管理者しか表示できないようにしております。(リジャッジ後のコンパイルエラーは公開されます)
ただし、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