AtCoder Beginner Contest 001

Submission #121602

Source codeソースコード

<?php
$inputs = array();
fscanf(STDIN, "%d", $a);
for ($i=0;$i < $a;$i++) {
    fscanf(STDIN, "%s", $inputs[$i]);
}

// echo $ret .  ' ' . $w . "\n";

// 初期化
$rain_data = array();
for ($i=0;$i<24;$i++) {
    for ($j=0;$j<12;$j++) {
        $rain_data[$i][$j] = 0;
    }
}

foreach ($inputs as $input) {
    $time = explode('-', $input);
    $time[0] = roundStartTime($time[0]);
    $time[1] = roundEndTime($time[1]);

    $start_time_hour_key = sprintf('%d', substr($time[0], 0, 2));
    $start_time_min_key  = floor( (int) substr($time[0], 2, 2) / 5);
    $end_time_hour_key   = sprintf('%d', substr($time[1], 0, 2));
    $end_time_min_key    = floor( (int) substr($time[1], 2, 2) / 5) - 1;

    for ($i=$start_time_hour_key;$i<=$end_time_hour_key;$i++) {
        if ($start_time_hour_key == $end_time_hour_key) {
            // ex) 1105-1150
            for ($j=$start_time_min_key;$j<=$end_time_min_key;$j++) {
                $rain_data[$i][$j] = 1;
            }
        } elseif ($i == $end_time_hour_key) {
            // ex) 1120-1230 -> 1200-1230
            for ($j=0;$j<=$end_time_min_key;$j++) {
                $rain_data[$i][$j] = 1;
            }
        } else {
            // ex) 1120-1230 -> 1120-1200
            for ($j=$start_time_min_key;$j<12;$j++) {
                $rain_data[$i][$j] = 1;
            }
        }
    }
}

$output = array();
$is_process = false;
foreach ($rain_data as $hour => $mins) {
    foreach ($mins as $key => $val) {
        if ($val === 1) {
            if ($is_process === false) {
                $start_minute = $key * 5;
                $start_hour = sprintf('%02d', $hour);
                $start_minute = sprintf('%02d', $start_minute);
                $start_time = $start_hour . $start_minute;

                $end_minute = $key * 5 + 5;
                if ($key == 11) {
                    $end_minute = 0;
                    $hour++;
                }

                $end_hour = sprintf('%02d', $hour);
                $end_minute = sprintf('%02d', $end_minute);
                $end_time = $end_hour . $end_minute;
                $is_process = true;

                // foreach 終わってしまうため
                if ($end_time == 2400) {
                    $output[] = $start_time . '-' . $end_time;
                }
            } else {
                $end_minute = $key * 5 + 5;
                if ($key == 11) {
                    $end_minute = 0;
                    $hour++;
                }

                $end_hour = sprintf('%02d', $hour);
                $end_minute = sprintf('%02d', $end_minute);
                $end_time = $end_hour . $end_minute;

                // foreach 終わってしまうため
                if ($end_time == 2400) {
                    $output[] = $start_time . '-' . $end_time;
                }
            }
        } else {
            if ($is_process === true) {
                $output[] = $start_time . '-' . $end_time;
                $is_process = false;
            }
        }
    }
}

// output
foreach ($output as $val) {
    echo $val ."\n";
}
// var_dump($rain_data);

function roundStartTime($start_time) {
    round($start_time);
    $last_keta = substr($start_time, -1);
    $first_keta = substr($start_time, 0, 3);
    if (0 <= $last_keta && $last_keta < 5) {
        $last_keta = 0;
    } else {
        $last_keta = 5;
    }

    return $first_keta . $last_keta;
}

function roundEndTime($end_time) {
    $first_digit_minute  = substr($end_time, 2, 1);
    $second_digit_minute = substr($end_time, -1);
    $hour = substr($end_time, 0, 2);
    if (1 <= $second_digit_minute && $second_digit_minute <= 5) {
        $second_digit_minute = 5;
    } elseif (6 <= $second_digit_minute && $second_digit_minute <= 9) {
        $second_digit_minute = 0;
        if ($first_digit_minute > 5) {
            $first_digit_minute = 0;
        } else {
            $first_digit_minute++;
        }
    }

    // 1300の場合はkeyにするときに面倒なので1260ということにする
    if ($first_digit_minute == 0 && $second_digit_minute == 0) {
        $hour--;
        $first_digit_minute = 6;
        $second_digit_minute = 0;
    }

    return $hour . $first_digit_minute . $second_digit_minute;
}
?>

Submission

Task問題 D - 感雨時刻の整理
User nameユーザ名 shibu_t
Created time投稿日時
Language言語 PHP (PHP 5.3.10)
Status状態 WA
Score得点 0
Source lengthソースコード長 4396 Byte
File nameファイル名
Exec time実行時間 ms
Memory usageメモリ使用量 -

Test case

Set

Set name Score得点 / Max score Cases
all 0 / 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 44 ms 3748 KB
00_sample_02.txt AC 43 ms 3820 KB
00_sample_03.txt AC 42 ms 3812 KB
cho_cho_chokudai.txt TLE
chokudai_ga_cho.txt AC 870 ms 12084 KB
test_01.txt AC 48 ms 3940 KB
test_02.txt AC 48 ms 3940 KB
test_03.txt AC 44 ms 3940 KB
test_04.txt AC 47 ms 3932 KB
test_05.txt AC 46 ms 3948 KB
test_06.txt AC 49 ms 3936 KB
test_07.txt AC 47 ms 3804 KB
test_08.txt AC 45 ms 3892 KB
test_09.txt AC 62 ms 3928 KB
test_10.txt AC 60 ms 4064 KB
test_11.txt AC 53 ms 3932 KB
test_12.txt AC 56 ms 3940 KB
test_13.txt AC 49 ms 3940 KB
test_14.txt AC 59 ms 3884 KB
test_15.txt AC 64 ms 4016 KB
test_16.txt WA
test_17.txt WA
test_18.txt WA
test_19.txt AC 52 ms 3940 KB
test_20.txt AC 51 ms 3996 KB
test_21.txt AC 559 ms 12000 KB
test_22.txt AC 682 ms 12000 KB
test_23.txt AC 577 ms 12020 KB
test_24.txt AC 666 ms 12008 KB
test_25.txt AC 615 ms 12008 KB
test_26.txt AC 463 ms 11824 KB
test_27.txt AC 453 ms 11808 KB
test_28.txt WA
test_29.txt WA
test_30.txt WA
test_31.txt WA
test_32.txt WA
test_33.txt WA
test_34.txt WA
test_35.txt AC 47 ms 3868 KB
test_36.txt WA
test_37.txt WA
test_38.txt AC 473 ms 11888 KB
test_39.txt WA
test_40.txt WA
test_41.txt AC 1021 ms 11872 KB
test_42.txt AC 1030 ms 11804 KB
test_43.txt AC 1016 ms 11880 KB