結果

問題 No.1020 Reverse
コンテスト
ユーザー poapoa
提出日時 2020-07-30 12:37:30
言語 Haskell
(9.14.1)
コンパイル:
ghc -rtsopts -with-rtsopts=-K1G -o a.out -O2 _filename_
実行:
./a.out
結果
AC  
実行時間 17 ms / 2,000 ms
+ 579µs
コード長 872 bytes
記録
記録タグの例:
初AC ショートコード 純ショートコード 純主流ショートコード 最速実行時間
コンパイル時間 4,431 ms
コンパイル使用メモリ 228,736 KB
実行使用メモリ 20,096 KB
最終ジャッジ日時 2026-08-05 12:28:01
合計ジャッジ時間 5,987 ms
ジャッジサーバーID
(参考情報)
judge1_0 / judge2_0
このコードへのチャレンジ
(要ログイン)
ファイルパターン 結果
sample AC * 3
other AC * 15
権限があれば一括ダウンロードができます
コンパイルメッセージ
Loaded package environment from /home/judge/.ghc/x86_64-linux-9.14.1/environments/default
[1 of 2] Compiling Main             ( Main.hs, Main.o )
[2 of 2] Linking a.out

ソースコード

diff #
raw source code

import qualified Control.Arrow         as Arrow
import qualified Control.Monad         as Monad
import qualified Data.Char             as Char
import qualified Data.List             as List
import qualified Data.ByteString.Char8 as BSC8
import qualified Data.Vector.Unboxed   as VU
import qualified Data.Ord              as Ord

getI :: BSC8.ByteString -> Maybe (Int, BSC8.ByteString)
getI = fmap (Arrow.second BSC8.tail) . BSC8.readInt
getAB :: IO (Int, Int)
getAB = (\vec -> (vec VU.! 0, vec VU.! 1)) . VU.unfoldrN 2 getI <$> BSC8.getLine

main :: IO ()
main = do
  (n, k) <- getAB
  s      <- BSC8.unpack <$> BSC8.getLine
  if even (n - k)
    then solve' n k s
    else solve'' n k s

solve', solve'' :: Int -> Int -> String -> IO ()
solve' n k s
  = putStrLn $ drop (k - 1) s ++ (reverse $ take (k - 1) s)
solve'' n k s
  = putStrLn $ drop (k - 1) s ++ take (k - 1) s
0