Submission #431220


Source Code Expand

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 Info

Submission Time
Task D - 感雨時刻の整理
User yokobutton
Language Haskell (GHC 7.4.1)
Score 100
Code Size 1647 Byte
Status AC
Exec Time 789 ms
Memory 21684 KB

Judge Result

Set Name all
Score / Max Score 100 / 100
Status
AC × 48
Set Name Test Cases
all 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
Case Name Status Exec Time Memory
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