Submission #26365878


Source Code Expand

macro_rules! input {
  (source = $s:expr, $($r:tt)*) => {
      let mut iter = $s.split_whitespace();
      let mut next = || { iter.next().unwrap() };
      input_inner!{next, $($r)*}
  };
  ($($r:tt)*) => {
      let stdin = std::io::stdin();
      let mut bytes = std::io::Read::bytes(std::io::BufReader::new(stdin.lock()));
      let mut next = move || -> String{
          bytes
              .by_ref()
              .map(|r|r.unwrap() as char)
              .skip_while(|c|c.is_whitespace())
              .take_while(|c|!c.is_whitespace())
              .collect()
      };
      input_inner!{next, $($r)*}
  };
}

macro_rules! input_inner {
  ($next:expr) => {};
  ($next:expr, ) => {};

  ($next:expr, $var:ident : $t:tt $($r:tt)*) => {
      let $var = read_value!($next, $t);
      input_inner!{$next $($r)*}
  };
}

macro_rules! read_value {
  ($next:expr, ( $($t:tt),* )) => {
      ( $(read_value!($next, $t)),* )
  };

  ($next:expr, [ $t:tt ; $len:expr ]) => {
      (0..$len).map(|_| read_value!($next, $t)).collect::<Vec<_>>()
  };

  ($next:expr, chars) => {
      read_value!($next, String).chars().collect::<Vec<char>>()
  };

  ($next:expr, usize1) => {
      read_value!($next, usize) - 1
  };

  ($next:expr, $t:ty) => {
      $next().parse::<$t>().expect("Parse error")
  };
}

fn check(a: &[usize], m: usize, key: usize) -> bool {
    let mut k = 0;
    let mut tmp = 0;
    for aa in a {
        if aa - tmp >= m {
            tmp = *aa;
            k += 1;
        }
    }
    k >= key // trueならもっとmを大きくしてもいい余裕がある
}
fn binary_search(a: Vec<usize>, key: usize, mut low: usize, mut high: usize) -> usize {
  while high - low > 1 {
    let mid = low + (high - low) / 2;
    if check(&a, mid, key) {
      low = mid;
    }else{
      high = mid;
    }
  }
  low
}
fn main() {
    input! {
      n: usize,
      l: usize,
      k: usize,
      a: [usize;n],
    }
    let k = k + 1;
    let mut a = a;
    a.push(l);
    dbg!(&a);
    let ans = binary_search(a, k, 0, l);
    println!("{}", ans);
}

Submission Info

Submission Time
Task 001 - Yokan Party(★4)
User uta8a
Language Rust (1.42.0)
Score 4
Code Size 2149 Byte
Status AC
Exec Time 447 ms
Memory 2904 KiB

Judge Result

Set Name Sample All
Score / Max Score 0 / 0 4 / 4
Status
AC × 5
AC × 29
Set Name Test Cases
Sample 01_01_sample_picture_01.txt, 01_02_sample_01.txt, 01_02_sample_02.txt, 01_02_sample_03.txt, 01_02_sample_04.txt
All 01_01_sample_picture_01.txt, 01_02_sample_01.txt, 01_02_sample_02.txt, 01_02_sample_03.txt, 01_02_sample_04.txt, 02_fixed_01.txt, 02_fixed_02.txt, 02_fixed_03.txt, 03_k_sensitive_01.txt, 03_k_sensitive_02.txt, 03_k_sensitive_03.txt, 03_k_sensitive_04.txt, 04_random_small_01.txt, 04_random_small_02.txt, 04_random_small_03.txt, 05_random_bias_01.txt, 05_random_bias_02.txt, 05_random_bias_03.txt, 06_random_01.txt, 06_random_02.txt, 06_random_03.txt, 06_random_04.txt, 07_random_max_01.txt, 07_random_max_02.txt, 07_random_max_03.txt, 07_random_max_04.txt, 08_equally_01.txt, 08_equally_02.txt, 09_max_01.txt
Case Name Status Exec Time Memory
01_01_sample_picture_01.txt AC 6 ms 2052 KiB
01_02_sample_01.txt AC 2 ms 2116 KiB
01_02_sample_02.txt AC 2 ms 2188 KiB
01_02_sample_03.txt AC 1 ms 2052 KiB
01_02_sample_04.txt AC 2 ms 2080 KiB
02_fixed_01.txt AC 2 ms 1992 KiB
02_fixed_02.txt AC 439 ms 2836 KiB
02_fixed_03.txt AC 443 ms 2824 KiB
03_k_sensitive_01.txt AC 3 ms 2100 KiB
03_k_sensitive_02.txt AC 2 ms 2040 KiB
03_k_sensitive_03.txt AC 2 ms 2088 KiB
03_k_sensitive_04.txt AC 2 ms 2044 KiB
04_random_small_01.txt AC 2 ms 2068 KiB
04_random_small_02.txt AC 2 ms 2060 KiB
04_random_small_03.txt AC 2 ms 1984 KiB
05_random_bias_01.txt AC 440 ms 2856 KiB
05_random_bias_02.txt AC 443 ms 2860 KiB
05_random_bias_03.txt AC 443 ms 2736 KiB
06_random_01.txt AC 430 ms 2836 KiB
06_random_02.txt AC 420 ms 2820 KiB
06_random_03.txt AC 439 ms 2832 KiB
06_random_04.txt AC 423 ms 2792 KiB
07_random_max_01.txt AC 447 ms 2832 KiB
07_random_max_02.txt AC 445 ms 2820 KiB
07_random_max_03.txt AC 442 ms 2812 KiB
07_random_max_04.txt AC 444 ms 2824 KiB
08_equally_01.txt AC 440 ms 2808 KiB
08_equally_02.txt AC 436 ms 2904 KiB
09_max_01.txt AC 445 ms 2860 KiB