Submission #108275


Source Code Expand

{-# LANGUAGE MultiParamTypeClasses,FlexibleContexts,FlexibleInstances,TypeSynonymInstances,BangPatterns,RankNTypes #-}

import Control.Monad
import Control.Monad.ST
import Control.Applicative
import Control.Arrow
import Debug.Trace

import Data.List
import Data.Int
import Data.Maybe
import Data.Array.Unboxed
import Data.Array.ST
import qualified Data.Map as M
import qualified Data.Set as S
import qualified Data.ByteString.Char8 as B

import Text.Printf

readInt = B.readInt >>> fmap fst >>> fromMaybe 0
readsInt = map readInt . B.words <$> B.getLine
readLine :: Read a => IO a
readLine = read <$> getLine 
readsLine :: Read a => IO [a]
readsLine = map read . words <$> getLine

cmpFst (a,_) (b,_) = compare a b
cmpSnd (_,a) (_,b) = compare a b
cmpLen a b = length a `compare` length b

swap (a,b) = (b,a)
rect a b = rect2 0 0 a b
rect2 i j a b = ((i,j),(a,b))

itof :: Int -> Double
itof = fromIntegral
casti = fromIntegral

maximize f l = snd $ maximumBy cmpFst [(f x,x) | x <- l]
minimize f l = snd $ minimumBy cmpFst [(f x,x) | x <- l]

infixr 2 <||> 
infixr 3 <&&>
p1 <||> p2 = (p1 &&& p2) >>> uncurry (||)
p1 <&&> p2 = (p1 &&& p2) >>> uncurry (&&)

parse (a1:a2:a3:a4:'-':a5:a6:a7:a8:_) = (h1*60+m1,h2*60+m2)
    where
    h1 = read [a1,a2] :: Int
    h2 = read [a5,a6] :: Int
    m1 = read [a3,a4] :: Int
    m2 = read [a7,a8] :: Int

solve :: [(Int,Int)] -> [(Int,Int)]
solve l = merge $ map marume l

merge l = sort $ foldl' f [] l
    where
    f acc (a,b) = (a',b'):y
        where
        (x,y) = partition (hasIntersection (a,b)) acc
        (l1,l2) = unzip x
        a' = minimum $ a:l1
        b' = maximum $ b:l2
    
hasIntersection (a,b) (c,d) = (c <= b && a <= d)

marume (a,b) = (floor (fromIntegral a/5)*5,ceiling (fromIntegral b/5)*5)
main = do
    n <- readLn
    l <- replicateM n (parse <$> getLine)
    let ans = solve l
    forM_ ans $ \ (a,b) ->  do
        let h1 = a `div` 60
        let m1 = a `mod` 60
        let h2 = b `div` 60
        let m2 = b `mod` 60
        printf "%02d%02d-%02d%02d\n" h1 m1 h2 m2
        
    

Submission Info

Submission Time
Task D - 感雨時刻の整理
User autotaker
Language Haskell (GHC 7.4.1)
Score 100
Code Size 2136 Byte
Status AC
Exec Time 1247 ms
Memory 35044 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 59 ms 1440 KB
00_sample_02.txt AC 28 ms 1312 KB
00_sample_03.txt AC 26 ms 1568 KB
cho_cho_chokudai.txt AC 1033 ms 34964 KB
chokudai_ga_cho.txt AC 1023 ms 34976 KB
test_01.txt AC 34 ms 2080 KB
test_02.txt AC 32 ms 2080 KB
test_03.txt AC 31 ms 2084 KB
test_04.txt AC 34 ms 2080 KB
test_05.txt AC 32 ms 2076 KB
test_06.txt AC 33 ms 1952 KB
test_07.txt AC 29 ms 1944 KB
test_08.txt AC 29 ms 1824 KB
test_09.txt AC 45 ms 2528 KB
test_10.txt AC 45 ms 2588 KB
test_11.txt AC 42 ms 2464 KB
test_12.txt AC 39 ms 2212 KB
test_13.txt AC 32 ms 1908 KB
test_14.txt AC 43 ms 2456 KB
test_15.txt AC 47 ms 2596 KB
test_16.txt AC 31 ms 1948 KB
test_17.txt AC 44 ms 2400 KB
test_18.txt AC 33 ms 1948 KB
test_19.txt AC 40 ms 2216 KB
test_20.txt AC 42 ms 2336 KB
test_21.txt AC 1022 ms 34928 KB
test_22.txt AC 1028 ms 34992 KB
test_23.txt AC 1051 ms 34932 KB
test_24.txt AC 1027 ms 34976 KB
test_25.txt AC 1018 ms 34980 KB
test_26.txt AC 1040 ms 34972 KB
test_27.txt AC 1044 ms 35020 KB
test_28.txt AC 1151 ms 35032 KB
test_29.txt AC 28 ms 1312 KB
test_30.txt AC 28 ms 1884 KB
test_31.txt AC 196 ms 7324 KB
test_32.txt AC 29 ms 1768 KB
test_33.txt AC 769 ms 21668 KB
test_34.txt AC 26 ms 1444 KB
test_35.txt AC 35 ms 1956 KB
test_36.txt AC 1030 ms 34972 KB
test_37.txt AC 1247 ms 34980 KB
test_38.txt AC 1043 ms 34976 KB
test_39.txt AC 1060 ms 35044 KB
test_40.txt AC 1090 ms 34984 KB
test_41.txt AC 1021 ms 34972 KB
test_42.txt AC 1029 ms 34972 KB
test_43.txt AC 1027 ms 34972 KB