AtCoder Beginner Contest 001

Submission #431220

Source codeソースコード

import Control.Applicative
import Data.List

timeToMinute :: Int -> Int
timeToMinute t = t `div` 100 * 60 + t `mod` 100

pairTimeToMinute :: (Int, Int) -> (Int, Int)
pairTimeToMinute (x, y) = (timeToMinute x, timeToMinute y)

minuteToTime :: Int -> Int
minuteToTime t = t `div` 60 * 100 + t `mod` 60

pairMinuteToTime :: (Int, Int) -> (Int, Int)
pairMinuteToTime (x, y) = (minuteToTime x, minuteToTime y)

roundMinute :: (Int, Int) -> (Int, Int)
roundMinute (start, end) = (roundStart, roundEnd)
	where
		roundStart
			| digit < 5 = start - digit
			| 5 <= digit = start + 5 - digit
			where digit = start `mod` 10
		roundEnd
			| digit == 0 = end
			| digit < 5 = end + 5 - digit
			| digit == 5 = end
			| 5 < digit = end + 10 - digit
			where digit = end `mod` 10

unit :: [(Int, Int)] -> [(Int, Int)]
unit ( x : []) = [x]
unit ((start, end) : (nstart, nend) : times )
	| end < nstart = (start, end) : unit ((nstart, nend): times)
	| end < nend = unit ( (start, nend) : times)
	| otherwise = unit ((start, end) : times)

connect :: (Int, Int) -> String
connect (start, end) = (fillZero $ show start) ++ "-" ++ (fillZero $ show end)

fillZero :: String -> String
fillZero time = replicate (4 - length time) '0' ++ time

main :: IO ()
main = do
	n <- getLine

	times <- map (splitAt 4 ) . sort . lines <$> getContents
	
	let times' = [(read x::Int, read (drop 1 y)::Int) | (x, y) <- times]

--	mapM_ (putStrLn . connect) $ map pairMinuteToTime $ map (roundMinute . pairTimeToMinute) times'
	mapM_ (putStrLn . connect) $ map pairMinuteToTime $ unit $ map (roundMinute . pairTimeToMinute) times'

Submission

Task問題 D - 感雨時刻の整理
User nameユーザ名 yokobutton
Created time投稿日時
Language言語 Haskell (GHC 7.4.1)
Status状態 AC
Score得点 100
Source lengthソースコード長 1647 Byte
File nameファイル名
Exec time実行時間 789 ms
Memory usageメモリ使用量 21684 KB

Test case

Set

Set name Score得点 / Max score Cases
all 100 / 100 00_sample_01.txt,00_sample_02.txt,00_sample_03.txt,cho_cho_chokudai.txt,chokudai_ga_cho.txt,test_01.txt,test_02.txt,test_03.txt,test_04.txt,test_05.txt,test_06.txt,test_07.txt,test_08.txt,test_09.txt,test_10.txt,test_11.txt,test_12.txt,test_13.txt,test_14.txt,test_15.txt,test_16.txt,test_17.txt,test_18.txt,test_19.txt,test_20.txt,test_21.txt,test_22.txt,test_23.txt,test_24.txt,test_25.txt,test_26.txt,test_27.txt,test_28.txt,test_29.txt,test_30.txt,test_31.txt,test_32.txt,test_33.txt,test_34.txt,test_35.txt,test_36.txt,test_37.txt,test_38.txt,test_39.txt,test_40.txt,test_41.txt,test_42.txt,test_43.txt

Test case

Case name Status状態 Exec time実行時間 Memory usageメモリ使用量
00_sample_01.txt AC 31 ms 1372 KB
00_sample_02.txt AC 31 ms 1316 KB
00_sample_03.txt AC 29 ms 1432 KB
cho_cho_chokudai.txt AC 746 ms 20636 KB
chokudai_ga_cho.txt AC 588 ms 16544 KB
test_01.txt AC 33 ms 1820 KB
test_02.txt AC 33 ms 1820 KB
test_03.txt AC 35 ms 1816 KB
test_04.txt AC 31 ms 1828 KB
test_05.txt AC 32 ms 1776 KB
test_06.txt AC 33 ms 1816 KB
test_07.txt AC 33 ms 1940 KB
test_08.txt AC 30 ms 1864 KB
test_09.txt AC 43 ms 2080 KB
test_10.txt AC 46 ms 2204 KB
test_11.txt AC 38 ms 2084 KB
test_12.txt AC 38 ms 1952 KB
test_13.txt AC 31 ms 1824 KB
test_14.txt AC 40 ms 2160 KB
test_15.txt AC 42 ms 2340 KB
test_16.txt AC 31 ms 1820 KB
test_17.txt AC 42 ms 2128 KB
test_18.txt AC 37 ms 1884 KB
test_19.txt AC 41 ms 1928 KB
test_20.txt AC 41 ms 2084 KB
test_21.txt AC 779 ms 21664 KB
test_22.txt AC 786 ms 21660 KB
test_23.txt AC 781 ms 21664 KB
test_24.txt AC 775 ms 21668 KB
test_25.txt AC 771 ms 21664 KB
test_26.txt AC 764 ms 21664 KB
test_27.txt AC 717 ms 20640 KB
test_28.txt AC 785 ms 21668 KB
test_29.txt AC 30 ms 1440 KB
test_30.txt AC 31 ms 1824 KB
test_31.txt AC 130 ms 4772 KB
test_32.txt AC 29 ms 1824 KB
test_33.txt AC 505 ms 14492 KB
test_34.txt AC 30 ms 1436 KB
test_35.txt AC 36 ms 1828 KB
test_36.txt AC 778 ms 21668 KB
test_37.txt AC 778 ms 21664 KB
test_38.txt AC 768 ms 21664 KB
test_39.txt AC 783 ms 21684 KB
test_40.txt AC 789 ms 21660 KB
test_41.txt AC 599 ms 16540 KB
test_42.txt AC 773 ms 21664 KB
test_43.txt AC 613 ms 16544 KB