結果
問題 | No.921 ずんだアロー |
ユーザー |
|
提出日時 | 2020-11-14 13:44:00 |
言語 | Haskell (9.10.1) |
結果 |
AC
|
実行時間 | 11 ms / 2,000 ms |
コード長 | 1,100 bytes |
コンパイル時間 | 5,566 ms |
コンパイル使用メモリ | 180,228 KB |
実行使用メモリ | 9,344 KB |
最終ジャッジ日時 | 2024-07-22 22:52:43 |
合計ジャッジ時間 | 6,172 ms |
ジャッジサーバーID (参考情報) |
judge3 / judge4 |
(要ログイン)
ファイルパターン | 結果 |
---|---|
sample | AC * 3 |
other | AC * 22 |
コンパイルメッセージ
Loaded package environment from /home/judge/.ghc/x86_64-linux-9.8.2/environments/default [1 of 2] Compiling Main ( Main.hs, Main.o ) [2 of 2] Linking a.out
ソースコード
import Control.Monad import qualified Data.ByteString.Char8 as BSC8 import Data.IORef import Data.Maybe import qualified Data.Vector.Unboxed.Mutable as VUM main :: IO () main = do getLine ax <- getIntList -- ans = 0 p = 1 f = 2 dp <- VUM.replicate 3 (0 :: Int) forM_ ax $ \a -> do p <- VUM.unsafeRead dp 1 f <- VUM.unsafeRead dp 2 if a == p then do VUM.unsafeModify dp succ 0 VUM.unsafeWrite dp 2 1 else if f /= 0 then do VUM.unsafeWrite dp 1 0 VUM.unsafeWrite dp 2 0 else do VUM.unsafeModify dp succ 0 VUM.unsafeWrite dp 2 1 VUM.unsafeWrite dp 1 a print =<< VUM.unsafeRead dp 0 readInt :: BSC8.ByteString -> Int readInt = fst . fromJust . BSC8.readInt {-# INLINE readInt #-} getInt :: IO Int getInt = readInt <$> BSC8.getLine {-# INLINE getInt #-} readIntList :: BSC8.ByteString -> [Int] readIntList = map readInt . BSC8.words {-# INLINE readIntList #-} getIntList :: IO [Int] getIntList = readIntList <$> BSC8.getLine {-# INLINE getIntList #-}