提出 #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); }
提出情報
ジャッジ結果
セット名 | All | Sample | ||||
---|---|---|---|---|---|---|
得点 / 配点 | 300 / 300 | 0 / 0 | ||||
結果 |
|
|
セット名 | テストケース |
---|---|
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 |