fork(1) download
  1. #[allow(unused_imports)]
  2. use std::io::{BufWriter, stdin, stdout, Write};
  3.  
  4. struct Scanner { buffer: Vec<String> }
  5.  
  6. impl Scanner {
  7. fn next<T: std::str::FromStr>(&mut self) -> T {
  8. loop {
  9. if let Some(token) = self.buffer.pop() {
  10. return token.parse().ok().expect("parse error");
  11. }
  12. let mut input = String::new();
  13. stdin().read_line(&mut input).expect("read error");
  14. self.buffer = input.split_whitespace().rev().map(String::from).collect();
  15. }
  16. }
  17. }
  18.  
  19. macro_rules! io_init {
  20. ($scan:ident, $out:ident) => {
  21. let mut $scan = Scanner { buffer: Vec::new() };
  22. let $out = &mut BufWriter::new(stdout());
  23. };
  24. }
  25.  
  26. fn solve(scan: &mut Scanner, out: &mut BufWriter<std::io::Stdout>) {
  27. let n = scan.next::<usize>();
  28. let k = scan.next::<usize>();
  29. let mut a = Vec::with_capacity(n);
  30. for _ in 0..n {
  31. a.push(scan.next::<i64>());
  32. }
  33. a.sort_unstable();
  34. let mid1 = k + (n - k + 2) / 2 - 1;
  35. let mid2 = (n - k + 1) / 2 - 1;
  36. let res = a[mid1] - a[mid2] + 1;
  37. writeln!(out, "{}", res).unwrap();
  38. }
  39.  
  40. fn main() {
  41. io_init!(scan, out);
  42. let t = scan.next::<i32>();
  43. for _ in 0..t {
  44. solve(&mut scan, out);
  45. }
  46. }
  47.  
Success #stdin #stdout 0.01s 5324KB
stdin
4
4 0
1 2 3 4
5 2
7 6 6 7 1
3 1
6 7 9
6 2
5 1 9 10 13 2
stdout
2
2
4
9