提出 #15797707


ソースコード 拡げる

use proconio::input;

fn gcd(n: u64, m: u64) -> u64 {
    if n < m {
        gcd(m, n)
    } else if m == 0 {
        n
    } else {
        gcd(m, n % m)
    }
}

fn main() {
    input! {
        n: usize,
        x_start: u64,
        mut x: [u64; n],
    };
    if n == 1 {
        println!(
            "{}",
            if x[0] > x_start {
                x[0] - x_start
            } else {
                x_start - x[0]
            }
        );
        return;
    }
    x.sort();
    let mut d = x[1] - x[0];
    let mut p = x[0];
    for &x_i in x.iter() {
        d = gcd(d, x_i - p);
        p = x_i;
    }
    let ans = if x_start < x[0] {
        gcd(d, x[0] - x_start)
    } else if *x.last().unwrap() < x_start {
        gcd(d, x_start - x.last().unwrap())
    } else {
        let mut res = None;
        for (x_i0, x_i1) in x.windows(2).map(|w| match w {
            &[x_i0, x_i1] => (x_i0, x_i1),
            _ => unreachable!(),
        }) {
            if (x_i0..=x_i1).contains(&x_start) {
                res = Some(std::cmp::max(
                    gcd(d, x_i1 - x_start),
                    gcd(d, x_start - x_i0),
                ));
            }
        }
        res.unwrap()
    };
    println!("{}", ans);
}

提出情報

提出日時
問題 C - Skip
ユーザ bouzuya
言語 Rust (1.42.0)
得点 300
コード長 1241 Byte
結果 AC
実行時間 29 ms
メモリ 4160 KiB

ジャッジ結果

セット名 All Sample
得点 / 配点 300 / 300 0 / 0
結果
AC × 22
AC × 3
セット名 テストケース
All hand_1, large_1, large_2, large_3, large_4, large_5, large_6, large_7, large_8, max_1, max_2, max_3, min_1, min_2, sample_01, sample_02, sample_03, small_1, small_2, small_3, small_4, small_5
Sample sample_01, sample_02, sample_03
ケース名 結果 実行時間 メモリ
hand_1 AC 6 ms 2020 KiB
large_1 AC 7 ms 2444 KiB
large_2 AC 13 ms 2416 KiB
large_3 AC 4 ms 2388 KiB
large_4 AC 2 ms 2052 KiB
large_5 AC 1 ms 2012 KiB
large_6 AC 1 ms 2024 KiB
large_7 AC 1 ms 2024 KiB
large_8 AC 3 ms 2028 KiB
max_1 AC 29 ms 4120 KiB
max_2 AC 26 ms 4108 KiB
max_3 AC 22 ms 4160 KiB
min_1 AC 3 ms 2020 KiB
min_2 AC 2 ms 2080 KiB
sample_01 AC 1 ms 1948 KiB
sample_02 AC 1 ms 2004 KiB
sample_03 AC 2 ms 2068 KiB
small_1 AC 1 ms 1956 KiB
small_2 AC 2 ms 1996 KiB
small_3 AC 1 ms 1960 KiB
small_4 AC 2 ms 2076 KiB
small_5 AC 2 ms 2156 KiB