提出 #19082735


ソースコード 拡げる

{-# LANGUAGE DatatypeContexts #-}
import           Control.Exception           (assert)
import           Control.Monad
import           Control.Monad.Primitive
import qualified Control.Monad.ST            as ST
import qualified Data.Array.IO               as IO
import qualified Data.Array.ST               as ST
import qualified Data.Array.Unboxed          as A
import           Data.Bits
import qualified Data.ByteString.Char8       as BS
import           Data.Char
import           Data.Foldable
import           Data.List
import qualified Data.Map.Strict             as Map
import           Data.Maybe
import qualified Data.Sequence               as Seq
import qualified Data.Set                    as Set
import qualified Data.Vector                 as VB
import qualified Data.Vector.Mutable         as VBM
import qualified Data.Vector.Unboxed         as V
import           Data.Vector.Unboxed.Base
import qualified Data.Vector.Unboxed.Mutable as VM
import           Debug.Trace

readInt = fst . fromJust . BS.readInt
readIntList = map readInt . BS.words
getInt = readInt <$> BS.getLine
getIntList = readIntList <$> BS.getLine
getIntVec n = V.unfoldrN n (BS.readInt . BS.dropWhile isSpace) <$> BS.getLine

readInteger = fst . fromJust . BS.readInteger
readIntegerList = map readInteger . BS.words
getInteger = readInteger <$> BS.getLine
getIntegerList = readIntegerList <$> BS.getLine

inf :: Int
inf = 10^18

bisectRight :: Ord a => (Int -> a) -> a -> Int -> Int -> Int
bisectRight f x lo hi
  | lo >= hi  = lo
  | x < f mid = bisectRight f x lo mid
  | otherwise = bisectRight f x (mid+1) hi
  where
    mid = lo + (hi - lo) `div` 2

main = do
  [n, m] <- getIntList
  xs <- replicateM m getInt

  let canFinish i []     tm = i >= n
      canFinish i (x:xs) tm = let d = max (x - i - 1) 0
                                  r1 = tm - 2*d
                                  r2 = if (tm-d) >= 0 then (tm-d)`div`2 else -1
                                  r = max r1 r2
                              in if r >= 0
                                 then canFinish (x+r) xs tm
                                 else False

      ans = bisectRight (canFinish 0 xs) False 0 inf

  print ans

提出情報

提出日時
問題 D - 壊れた電車
ユーザ unnohideyuki
言語 Haskell (GHC 8.8.3)
得点 100
コード長 2247 Byte
結果 AC
実行時間 85 ms
メモリ 22108 KiB

コンパイルエラー

Loaded package environment from /home/contestant/.ghc/x86_64-linux-8.8.3/environments/default

Main.hs:1:14: warning:
    -XDatatypeContexts is deprecated: It was widely considered a misfeature, and has been removed from the Haskell language.
  |
1 | {-# LANGUAGE DatatypeContexts #-}
  |              ^^^^^^^^^^^^^^^^

ジャッジ結果

セット名 Sample Dataset1 Dataset2 Dataset3
得点 / 配点 0 / 0 20 / 20 60 / 60 20 / 20
結果
AC × 2
AC × 17
AC × 36
AC × 60
セット名 テストケース
Sample sample-01.txt, sample-02.txt
Dataset1 sample-01.txt, sample-02.txt, 01-01.txt, 01-02.txt, 01-03.txt, 01-04.txt, 01-05.txt, 01-06.txt, 01-07.txt, 01-08.txt, 01-09.txt, 01-10.txt, 01-11.txt, 01-12.txt, 01-13.txt, 01-14.txt, 01-15.txt
Dataset2 sample-01.txt, sample-02.txt, 01-01.txt, 01-02.txt, 01-03.txt, 01-04.txt, 01-05.txt, 01-06.txt, 01-07.txt, 01-08.txt, 01-09.txt, 01-10.txt, 01-11.txt, 01-12.txt, 01-13.txt, 01-14.txt, 01-15.txt, 02-01.txt, 02-02.txt, 02-03.txt, 02-04.txt, 02-05.txt, 02-06.txt, 02-07.txt, 02-08.txt, 02-09.txt, 02-10.txt, 02-11.txt, 02-12.txt, 02-13.txt, 02-14.txt, 02-15.txt, 02-16.txt, 02-17.txt, 02-18.txt, 02-19.txt
Dataset3 sample-01.txt, sample-02.txt, 01-01.txt, 01-02.txt, 01-03.txt, 01-04.txt, 01-05.txt, 01-06.txt, 01-07.txt, 01-08.txt, 01-09.txt, 01-10.txt, 01-11.txt, 01-12.txt, 01-13.txt, 01-14.txt, 01-15.txt, 02-01.txt, 02-02.txt, 02-03.txt, 02-04.txt, 02-05.txt, 02-06.txt, 02-07.txt, 02-08.txt, 02-09.txt, 02-10.txt, 02-11.txt, 02-12.txt, 02-13.txt, 02-14.txt, 02-15.txt, 02-16.txt, 02-17.txt, 02-18.txt, 02-19.txt, 03-01.txt, 03-02.txt, 03-03.txt, 03-04.txt, 03-05.txt, 03-06.txt, 03-07.txt, 03-08.txt, 03-09.txt, 03-10.txt, 03-11.txt, 03-12.txt, 03-13.txt, 03-14.txt, 03-15.txt, 03-16.txt, 03-17.txt, 03-18.txt, 03-19.txt, 03-20.txt, 03-21.txt, 03-22.txt, sample-01.txt, sample-02.txt
ケース名 結果 実行時間 メモリ
01-01.txt AC 6 ms 3640 KiB
01-02.txt AC 2 ms 3652 KiB
01-03.txt AC 3 ms 3652 KiB
01-04.txt AC 2 ms 3700 KiB
01-05.txt AC 2 ms 3656 KiB
01-06.txt AC 2 ms 3740 KiB
01-07.txt AC 2 ms 3688 KiB
01-08.txt AC 2 ms 3748 KiB
01-09.txt AC 2 ms 3644 KiB
01-10.txt AC 1 ms 3712 KiB
01-11.txt AC 3 ms 3716 KiB
01-12.txt AC 2 ms 3588 KiB
01-13.txt AC 2 ms 3576 KiB
01-14.txt AC 3 ms 3700 KiB
01-15.txt AC 1 ms 3704 KiB
02-01.txt AC 2 ms 3704 KiB
02-02.txt AC 2 ms 3712 KiB
02-03.txt AC 4 ms 3820 KiB
02-04.txt AC 14 ms 6124 KiB
02-05.txt AC 81 ms 21916 KiB
02-06.txt AC 47 ms 13780 KiB
02-07.txt AC 81 ms 22052 KiB
02-08.txt AC 80 ms 20984 KiB
02-09.txt AC 81 ms 22024 KiB
02-10.txt AC 9 ms 3560 KiB
02-11.txt AC 84 ms 22108 KiB
02-12.txt AC 81 ms 21924 KiB
02-13.txt AC 80 ms 21916 KiB
02-14.txt AC 82 ms 22048 KiB
02-15.txt AC 77 ms 22056 KiB
02-16.txt AC 81 ms 22032 KiB
02-17.txt AC 84 ms 21988 KiB
02-18.txt AC 83 ms 22004 KiB
02-19.txt AC 80 ms 22108 KiB
03-01.txt AC 3 ms 3560 KiB
03-02.txt AC 2 ms 3668 KiB
03-03.txt AC 4 ms 4084 KiB
03-04.txt AC 77 ms 21832 KiB
03-05.txt AC 40 ms 11800 KiB
03-06.txt AC 50 ms 14264 KiB
03-07.txt AC 80 ms 22032 KiB
03-08.txt AC 77 ms 20956 KiB
03-09.txt AC 6 ms 3632 KiB
03-10.txt AC 80 ms 21988 KiB
03-11.txt AC 85 ms 22044 KiB
03-12.txt AC 40 ms 11540 KiB
03-13.txt AC 78 ms 21996 KiB
03-14.txt AC 82 ms 22008 KiB
03-15.txt AC 82 ms 21828 KiB
03-16.txt AC 74 ms 22008 KiB
03-17.txt AC 77 ms 22000 KiB
03-18.txt AC 85 ms 21832 KiB
03-19.txt AC 84 ms 22048 KiB
03-20.txt AC 82 ms 21900 KiB
03-21.txt AC 81 ms 21992 KiB
03-22.txt AC 83 ms 22000 KiB
sample-01.txt AC 3 ms 3556 KiB
sample-02.txt AC 2 ms 3580 KiB