diff options
Diffstat (limited to 'kattis-kth-alginda-quicksort/src/main.rs')
-rw-r--r-- | kattis-kth-alginda-quicksort/src/main.rs | 72 |
1 files changed, 0 insertions, 72 deletions
diff --git a/kattis-kth-alginda-quicksort/src/main.rs b/kattis-kth-alginda-quicksort/src/main.rs deleted file mode 100644 index afb23f7..0000000 --- a/kattis-kth-alginda-quicksort/src/main.rs +++ /dev/null @@ -1,72 +0,0 @@ -// https://kth.kattis.com/problems/kth.alginda.quicksort - -#![feature(test)] - -use std::io::{stdin, stdout, Read, Write}; - -mod radix_sort; -use radix_sort::radix_sort; - -fn main() { - let mut buffer = String::new(); - stdin().lock().read_to_string(&mut buffer).unwrap(); - let mut p = buffer.bytes(); - let mut n = 0; - while let Some(b) = p.next() { - if b == b' ' { - break; - } - n *= 10; - n += (b - b'0') as usize; - } - let mut xs = vec![0; n]; - for i in 0..n { - let mut neg = false; - let mut x = 0i32; - while let Some(b) = p.next() { - match b { - b' ' | b'\n' => break, - b'-' => neg = true, - b => { - x *= 10; - x += (b - b'0') as i32; - } - } - } - if neg { - x = -x; - } - xs[i] = x; - } - - radix_sort(&mut xs); - - let mut p = buffer.len() - 1; - let b = unsafe { buffer.as_mut_vec() }; - b[p] = b'\n'; - p -= 1; - for i in (0..n).rev() { - let x = xs[i]; - let neg = x < 0; - let mut x = if neg { (-x) as u32 } else { x as u32 }; - loop { - b[p] = (x % 10) as u8 + b'0'; - p -= 1; - x /= 10; - if x == 0 { - break; - } - } - if neg { - b[p] = b'-'; - p -= 1; - } - if i > 0 { - b[p] = b'\n'; - p -= 1; - } - } - p += 1; - - stdout().lock().write(&b[p..]).unwrap(); -} |