AtCoder Beginner Contest 001

Submission #1536597

Source codeソースコード

def D(N, TIME):
    # 時刻を5分刻みにする
    time = []
    for lst in TIME:
        S_hh = int(lst[0:2])  # 開始時刻(時)
        S_mm = int(lst[2:4])  # 開始時刻(分)
        E_hh = int(lst[5:7])  # 終了時刻(時)
        E_mm = int(lst[7:9])  # 終了時刻(分)
        start = S_hh * 60 + S_mm  # 開始時刻(0時0分からの経過時間(分))
        end = E_hh * 60 + E_mm  # 終了時刻(0時0分からの経過時間(分))
        start -= start % 5  # 丸めた時刻
        end += (5 - (end % 5)) % 5
        time.append([start, end])
    time.sort()  # 開始時刻の早いものソート

    # imos法で行く
    time_part = [0] * 1442  # 1440(1日は1440分)の区間に分けるには1441個の仕切りが必要、番兵として+1
    for lst in time:
        start_index = lst[0]
        end_index = lst[1]
        time_part[start_index] += 1
        time_part[end_index + 1] -= 1
    for i in range(len(time_part) - 1):
        time_part[i + 1] += time_part[i]

    # 1以上の要素が出てきた区間をs,tに詰める(s[i],t[i]が開始-終了)
    f = 0  # 0なら要素に0が来ており、1なら1が来た
    s = []
    t = []
    for i in range(len(time_part)):
        if time_part[i] > 0 and f == 0:
            s.append(i)
            f = 1
        if time_part[i] == 0 and f == 1:
            t.append(i - 1)
            f = 0

    # 開始終了時刻を復元
    rain_time = ''
    for i in range(len(s)):
        s_hh = s[i] // 60
        s_mm = s[i] % 60
        e_hh = t[i] // 60
        e_mm = t[i] % 60
        rain_time += '{0:02d}{1:02d}-{2:02d}{3:02d}\n'.format(
            s_hh, s_mm, e_hh, e_mm)
    rain_time = rain_time[:-1]
    return rain_time

n = int(input())
t = [input() for i in range(n)]
print(D(n,t))

Submission

Task問題 D - 感雨時刻の整理
User nameユーザ名 kenseiQ
Created time投稿日時
Language言語 Python3 (3.4.3)
Status状態 AC
Score得点 100
Source lengthソースコード長 1839 Byte
File nameファイル名
Exec time実行時間 147 ms
Memory usageメモリ使用量 10232 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 18 ms 3316 KB
00_sample_02.txt AC 17 ms 3064 KB
00_sample_03.txt AC 17 ms 3064 KB
cho_cho_chokudai.txt AC 106 ms 9188 KB
chokudai_ga_cho.txt AC 117 ms 9888 KB
test_01.txt AC 18 ms 3188 KB
test_02.txt AC 18 ms 3188 KB
test_03.txt AC 18 ms 3064 KB
test_04.txt AC 18 ms 3064 KB
test_05.txt AC 18 ms 3064 KB
test_06.txt AC 18 ms 3064 KB
test_07.txt AC 17 ms 3064 KB
test_08.txt AC 17 ms 3188 KB
test_09.txt AC 19 ms 3188 KB
test_10.txt AC 19 ms 3188 KB
test_11.txt AC 19 ms 3064 KB
test_12.txt AC 18 ms 3064 KB
test_13.txt AC 17 ms 3064 KB
test_14.txt AC 19 ms 3188 KB
test_15.txt AC 19 ms 3188 KB
test_16.txt AC 18 ms 3064 KB
test_17.txt AC 19 ms 3064 KB
test_18.txt AC 18 ms 3064 KB
test_19.txt AC 18 ms 3188 KB
test_20.txt AC 19 ms 3064 KB
test_21.txt AC 136 ms 10072 KB
test_22.txt AC 147 ms 10212 KB
test_23.txt AC 136 ms 10080 KB
test_24.txt AC 135 ms 10232 KB
test_25.txt AC 135 ms 10124 KB
test_26.txt AC 128 ms 9816 KB
test_27.txt AC 118 ms 10116 KB
test_28.txt AC 131 ms 9968 KB
test_29.txt AC 17 ms 3064 KB
test_30.txt AC 17 ms 3064 KB
test_31.txt AC 35 ms 4004 KB
test_32.txt AC 17 ms 3064 KB
test_33.txt AC 90 ms 7504 KB
test_34.txt AC 17 ms 3064 KB
test_35.txt AC 18 ms 3064 KB
test_36.txt AC 136 ms 10172 KB
test_37.txt AC 129 ms 9780 KB
test_38.txt AC 133 ms 9912 KB
test_39.txt AC 132 ms 10168 KB
test_40.txt AC 128 ms 9628 KB
test_41.txt AC 111 ms 9760 KB
test_42.txt AC 125 ms 9848 KB
test_43.txt AC 109 ms 9844 KB