Submission #5443034


Source Code Expand

from sys import stdin


def readLines():
    return [line.rstrip() for line in iter(stdin.readline, '')]


def putLine(line):
    print(line, flush=True)


def putLines(lines):
    for line in lines:
        putLine(line)


def toTimeStr(x1, x2):
    if x2 >= 60:
        x1 += 1
        x2 -= 60
    return "%02d%02d" % (x1, x2)


def mod5Down(x1, x2):
    x2 = int(x2)
    x2 = x2 - (x2 % 5)
    return toTimeStr(int(x1), x2)


def mod5Up(x1, x2):
    x2 = int(x2)
    m = x2 % 5
    x2 = x2 if m == 0 else x2 + (5-m)
    return toTimeStr(int(x1), x2)


def isConflict(x, b, a):
    # x  ---|------|---
    # b        |-------
    # or
    # a  ------|
    # を以って時間帯の重複と判断
    if (x[0] <= b and b <= x[1]):
        return True
    if (x[0] <= a and a <= x[1]):
        return True
    return False


def merge(ret, b, a):
    if not ret:
        ret.append([b, a])
        return
    for x in ret:
        if isConflict(x, b, a):
            # 時間帯が重複している場合
            # 開始は早い方
            x[0] = min(x[0], b)
            # 終了は遅い方
            x[1] = max(x[1], a)
            break
        else:
            # 重複でなければ追加
            ret.append([b, a])
            break
    pass


def main(lines):
    """
    implemente concret logic
    """
    result = []
    # 1行目を除外し昇順に並べておく
    lines = sorted(lines[1:])
    for l in lines:
        # 前後を時、分でそれぞれ分割
        [(b1, b2), (a1, a2)] = [(x[:2], x[2:]) for x in l.split("-")]
        # 直前への丸め
        b = mod5Down(b1, b2)
        # 直後への丸め
        a = mod5Up(a1, a2)
        # 重複箇所の結合
        merge(result, b, a)

    return ["%s-%s" % (x[0], x[1]) for x in result]


putLines(main(readLines()))

Submission Info

Submission Time
Task D - 感雨時刻の整理
User tatsuyaamasaki
Language Python (3.4.3)
Score 0
Code Size 1917 Byte
Status WA
Exec Time 344 ms
Memory 13756 KB

Judge Result

Set Name all
Score / Max Score 0 / 100
Status
AC × 36
WA × 12
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 18 ms 3064 KB
00_sample_02.txt AC 18 ms 3064 KB
00_sample_03.txt AC 18 ms 3064 KB
cho_cho_chokudai.txt AC 185 ms 5676 KB
chokudai_ga_cho.txt AC 167 ms 5676 KB
test_01.txt AC 19 ms 3064 KB
test_02.txt AC 19 ms 3064 KB
test_03.txt AC 19 ms 3064 KB
test_04.txt AC 19 ms 3064 KB
test_05.txt AC 19 ms 3064 KB
test_06.txt AC 19 ms 3064 KB
test_07.txt AC 18 ms 3064 KB
test_08.txt AC 18 ms 3064 KB
test_09.txt AC 21 ms 3188 KB
test_10.txt AC 21 ms 3064 KB
test_11.txt WA 23 ms 3188 KB
test_12.txt AC 20 ms 3064 KB
test_13.txt AC 19 ms 3064 KB
test_14.txt AC 20 ms 3064 KB
test_15.txt AC 21 ms 3064 KB
test_16.txt WA 20 ms 3064 KB
test_17.txt AC 21 ms 3064 KB
test_18.txt AC 19 ms 3064 KB
test_19.txt AC 20 ms 3064 KB
test_20.txt AC 20 ms 3064 KB
test_21.txt AC 184 ms 5676 KB
test_22.txt AC 179 ms 5676 KB
test_23.txt AC 184 ms 5676 KB
test_24.txt AC 177 ms 5676 KB
test_25.txt AC 182 ms 5676 KB
test_26.txt AC 180 ms 5676 KB
test_27.txt AC 171 ms 5676 KB
test_28.txt WA 339 ms 13628 KB
test_29.txt AC 18 ms 3188 KB
test_30.txt WA 18 ms 3064 KB
test_31.txt WA 61 ms 4468 KB
test_32.txt WA 18 ms 3064 KB
test_33.txt WA 222 ms 10072 KB
test_34.txt AC 18 ms 3064 KB
test_35.txt WA 20 ms 3064 KB
test_36.txt AC 186 ms 5676 KB
test_37.txt WA 344 ms 13756 KB
test_38.txt WA 194 ms 6204 KB
test_39.txt WA 329 ms 12988 KB
test_40.txt WA 323 ms 13116 KB
test_41.txt AC 161 ms 5676 KB
test_42.txt AC 176 ms 5676 KB
test_43.txt AC 166 ms 5676 KB