diff --git a/storage/zeta/rs/completed/21966.rs b/storage/zeta/rs/completed/21966.rs new file mode 100644 index 0000000..5491b3c --- /dev/null +++ b/storage/zeta/rs/completed/21966.rs @@ -0,0 +1,40 @@ +use std::io::stdin; + +fn main() { + let mut s = String::new(); + stdin().read_line(&mut s).unwrap(); + s.clear(); + stdin().read_line(&mut s).unwrap(); + s = s.trim().to_string(); + let n = s.len(); + let mut sentence_map = vec![0; n]; + + let mut curr_sentence = 0; + for (i, c) in s.char_indices() { + if c == '.' { + sentence_map[i] = curr_sentence; + curr_sentence += 1; + } else { + sentence_map[i] = curr_sentence; + } + } + if n <= 25 { + println!("{}", s); + } else if sentence_map[11] == sentence_map[n - 12] { + let first = &s[0..11]; + let last = &s[(n - 11)..n]; + let mut res = String::new(); + res.push_str(first); + res.push_str("..."); + res.push_str(last); + println!("{}", res); + } else { + let first = &s[0..9]; + let last = &s[(n - 10)..n]; + let mut res = String::new(); + res.push_str(first); + res.push_str("......"); + res.push_str(last); + println!("{}", res); + } +} diff --git a/storage/zeta/rs/completed/5920.rs b/storage/zeta/rs/completed/5920.rs new file mode 100644 index 0000000..ffa965b --- /dev/null +++ b/storage/zeta/rs/completed/5920.rs @@ -0,0 +1,58 @@ +use std::{ + cmp::Ordering, + io::{read_to_string, stdin}, +}; + +enum Comp { + HIGH, + LOW, +} + +// 5! * n + n^2 +fn original_ordering(n: usize, ords: &Vec>) -> Vec { + let mut cmp_map: Vec> = vec![]; + + for ord in ords { + cmp_map.push(vec![0; n]); + let target = cmp_map.last_mut().unwrap(); + for (i, &cow) in ord.iter().enumerate() { + target[cow - 1] = i; + } + } + + let mut cows = (1..=n).collect::>(); + + cows.sort_by(|&a, &b| { + let mut cnt = 0; + for pic in 0..5 { + if cmp_map[pic][a - 1] < cmp_map[pic][b - 1] { + cnt += 1; + } + } + if cnt >= 3 { + Ordering::Less + } else { + Ordering::Greater + } + }); + cows +} + +fn main() { + let temp = read_to_string(stdin()).unwrap(); + let mut iter = temp.split_ascii_whitespace(); + + let n = iter.next().unwrap().parse::().unwrap(); + + let orderings = (0..5) + .map(|_| { + (0..n) + .map(|_| iter.next().unwrap().parse::().unwrap()) + .collect::>() + }) + .collect::>>(); + + original_ordering(n, &orderings) + .iter() + .for_each(|x| println!("{}", x)); +}