Submission #4041054


Source Code Expand

use std::io;
use std::io::BufRead;

fn main() {
    let stdin = io::stdin();
    let mut lines = stdin.lock().lines();
    let n = lines.nth(0).unwrap().unwrap().parse::<usize>().unwrap();

    let mut times: Vec<(isize, isize)> = Vec::with_capacity(n);
    //times.extend(lines.map(|line| line.unwrap()));
    for line in lines {
        times.push(
            start_end_minutes(line.unwrap().as_str())
        );
    }
    times.sort_by(|a, b| a.0.cmp(&b.0));

    let mut times_iter = times.into_iter();
    let (mut start, mut end) = times_iter.next().unwrap();

    // let mut ordered = Vec::with_capacity(n);
    for time in times_iter {
        let (next_start, next_end) = time;

        if end >= next_start {
            // keep start
            // override end
            end = if next_end >= end { next_end } else { end };
            continue;
        }

        // ordered.push((start, end));
        output(start, end);

        start = next_start;
        end = next_end;
    }
    // ordered.push((start, end));
    output(start, end);
}

fn output(s: isize, e: isize) {
    println!("{:02}{:02}-{:02}{:02}", s / 60, s % 60, e / 60, e % 60);
}

fn start_end_minutes(s: &str) -> (isize, isize) {
    let mut s = s.trim_right()
        .split("-");

    (
        round_off(change_num_to_minutes(parse_numbers(s.next().unwrap()))),
        round_up(change_num_to_minutes(parse_numbers(s.next().unwrap())))
    )
}

fn parse_numbers<T: std::str::FromStr> (num_str: &str) -> T {
    num_str.parse::<T>().ok().unwrap()
}

fn change_num_to_minutes(num: isize) -> isize {
    let hours = num / 100;
    let minutes = num % 100;
    hours * 60 + minutes
}

fn round_off(num: isize) -> isize {
    if num % 5 == 0 {
        num
    } else {
        num - (num % 5)
    }
}

fn round_up(num: isize) -> isize {
    if num % 5 == 0 {
        num
    } else {
        num + (5 - num % 5)
    }
}

Submission Info

Submission Time
Task D - 感雨時刻の整理
User shotaf
Language Rust (1.15.1)
Score 100
Code Size 1981 Byte
Status AC
Exec Time 8 ms
Memory 4352 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 2 ms 4352 KB
00_sample_02.txt AC 2 ms 4352 KB
00_sample_03.txt AC 2 ms 4352 KB
cho_cho_chokudai.txt AC 6 ms 4352 KB
chokudai_ga_cho.txt AC 7 ms 4352 KB
test_01.txt AC 2 ms 4352 KB
test_02.txt AC 2 ms 4352 KB
test_03.txt AC 2 ms 4352 KB
test_04.txt AC 2 ms 4352 KB
test_05.txt AC 2 ms 4352 KB
test_06.txt AC 2 ms 4352 KB
test_07.txt AC 2 ms 4352 KB
test_08.txt AC 2 ms 4352 KB
test_09.txt AC 2 ms 4352 KB
test_10.txt AC 2 ms 4352 KB
test_11.txt AC 2 ms 4352 KB
test_12.txt AC 2 ms 4352 KB
test_13.txt AC 2 ms 4352 KB
test_14.txt AC 2 ms 4352 KB
test_15.txt AC 2 ms 4352 KB
test_16.txt AC 2 ms 4352 KB
test_17.txt AC 2 ms 4352 KB
test_18.txt AC 2 ms 4352 KB
test_19.txt AC 2 ms 4352 KB
test_20.txt AC 2 ms 4352 KB
test_21.txt AC 8 ms 4352 KB
test_22.txt AC 8 ms 4352 KB
test_23.txt AC 8 ms 4352 KB
test_24.txt AC 8 ms 4352 KB
test_25.txt AC 8 ms 4352 KB
test_26.txt AC 8 ms 4352 KB
test_27.txt AC 8 ms 4352 KB
test_28.txt AC 8 ms 4352 KB
test_29.txt AC 2 ms 4352 KB
test_30.txt AC 2 ms 4352 KB
test_31.txt AC 3 ms 4352 KB
test_32.txt AC 2 ms 4352 KB
test_33.txt AC 6 ms 4352 KB
test_34.txt AC 2 ms 4352 KB
test_35.txt AC 2 ms 4352 KB
test_36.txt AC 8 ms 4352 KB
test_37.txt AC 8 ms 4352 KB
test_38.txt AC 8 ms 4352 KB
test_39.txt AC 8 ms 4352 KB
test_40.txt AC 8 ms 4352 KB
test_41.txt AC 7 ms 4352 KB
test_42.txt AC 8 ms 4352 KB
test_43.txt AC 7 ms 4352 KB