Submission #2119099


Source Code Expand

#[allow(unused_imports)]
use std::io::*;
#[allow(unused_imports)]
use std::str::*;
#[allow(unused_imports)]
use std::mem::*;
#[allow(unused_imports)]
use std::cmp::*;
#[allow(unused_imports)]
use std::collections::HashSet;
#[allow(unused_imports)]
use std::collections::VecDeque;
#[allow(unused_imports)]
use std::usize;

#[allow(dead_code)]
fn read<T: FromStr>() -> T {
    let mut line = String::new();
    stdin().read_line(&mut line).unwrap();
    line.trim().to_string().parse().ok().unwrap()
}

#[allow(dead_code)]
fn read_cols<T: FromStr>() -> Vec<T> {
    let mut line = String::new();
    stdin().read_line(&mut line).unwrap();

    line.trim()
        .split_whitespace()
        .map(|s| s.parse().ok().unwrap())
        .collect()
}

fn find(num_man_in_groups: &[u64], last_num_man: u64) -> Option<(u64, u64)> {
    let mut min_num_man = last_num_man;
    let mut max_num_man = last_num_man;
    for num_man_in_group in num_man_in_groups.iter().rev() {
        let actual_min_man = ((min_num_man - 1) / num_man_in_group + 1) * num_man_in_group;
        if actual_min_man > max_num_man {
            return None;
        }

        min_num_man = actual_min_man;
        max_num_man = (max_num_man / num_man_in_group + 1) * num_man_in_group - 1;
    }

    return Some((min_num_man, max_num_man));
}

fn main() {
    let num_rounds = read::<u64>();
    let num_man_in_groups = read_cols::<u64>();
    let last_num_man = 2;

    assert_eq!(num_rounds as usize, num_man_in_groups.len());

    match find(num_man_in_groups.as_slice(), last_num_man) {
        Some((min, max)) => println!("{} {}", min, max),
        None => println!("-1"),
    };
}

Submission Info

Submission Time
Task B - Ice Rink Game
User hiratai
Language Rust (1.15.1)
Score 500
Code Size 1717 Byte
Status AC
Exec Time 12 ms
Memory 8444 KB

Judge Result

Set Name Sample All
Score / Max Score 0 / 0 500 / 500
Status
AC × 3
AC × 33
Set Name Test Cases
Sample sample_01.txt, sample_02.txt, sample_03.txt
All sample_01.txt, sample_02.txt, sample_03.txt, sample_01.txt, sample_02.txt, sample_03.txt, subtask_1_01.txt, subtask_1_02.txt, subtask_1_03.txt, subtask_1_04.txt, subtask_1_05.txt, subtask_1_06.txt, subtask_1_07.txt, subtask_1_08.txt, subtask_1_09.txt, subtask_1_10.txt, subtask_1_11.txt, subtask_1_12.txt, subtask_1_13.txt, subtask_1_14.txt, subtask_1_15.txt, subtask_1_16.txt, subtask_1_17.txt, subtask_1_18.txt, subtask_1_19.txt, subtask_1_20.txt, subtask_1_21.txt, subtask_1_22.txt, subtask_1_23.txt, subtask_1_24.txt, subtask_1_25.txt, subtask_1_26.txt, subtask_1_27.txt
Case Name Status Exec Time Memory
sample_01.txt AC 2 ms 4352 KB
sample_02.txt AC 2 ms 4352 KB
sample_03.txt AC 2 ms 4352 KB
subtask_1_01.txt AC 2 ms 4352 KB
subtask_1_02.txt AC 2 ms 4352 KB
subtask_1_03.txt AC 2 ms 4352 KB
subtask_1_04.txt AC 2 ms 4352 KB
subtask_1_05.txt AC 2 ms 4352 KB
subtask_1_06.txt AC 6 ms 4352 KB
subtask_1_07.txt AC 11 ms 8444 KB
subtask_1_08.txt AC 2 ms 4352 KB
subtask_1_09.txt AC 2 ms 4352 KB
subtask_1_10.txt AC 2 ms 4352 KB
subtask_1_11.txt AC 12 ms 6396 KB
subtask_1_12.txt AC 12 ms 6396 KB
subtask_1_13.txt AC 9 ms 6396 KB
subtask_1_14.txt AC 10 ms 6396 KB
subtask_1_15.txt AC 12 ms 6396 KB
subtask_1_16.txt AC 2 ms 4352 KB
subtask_1_17.txt AC 10 ms 6396 KB
subtask_1_18.txt AC 10 ms 6396 KB
subtask_1_19.txt AC 9 ms 6396 KB
subtask_1_20.txt AC 8 ms 6396 KB
subtask_1_21.txt AC 8 ms 6396 KB
subtask_1_22.txt AC 8 ms 6396 KB
subtask_1_23.txt AC 2 ms 4352 KB
subtask_1_24.txt AC 2 ms 4352 KB
subtask_1_25.txt AC 12 ms 6396 KB
subtask_1_26.txt AC 2 ms 4352 KB
subtask_1_27.txt AC 12 ms 6396 KB