complete 5920.rs 21966.rs
This commit is contained in:
40
storage/zeta/rs/completed/21966.rs
Normal file
40
storage/zeta/rs/completed/21966.rs
Normal file
@@ -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);
|
||||
}
|
||||
}
|
||||
58
storage/zeta/rs/completed/5920.rs
Normal file
58
storage/zeta/rs/completed/5920.rs
Normal file
@@ -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<usize>>) -> Vec<usize> {
|
||||
let mut cmp_map: Vec<Vec<usize>> = 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::<Vec<usize>>();
|
||||
|
||||
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::<usize>().unwrap();
|
||||
|
||||
let orderings = (0..5)
|
||||
.map(|_| {
|
||||
(0..n)
|
||||
.map(|_| iter.next().unwrap().parse::<usize>().unwrap())
|
||||
.collect::<Vec<usize>>()
|
||||
})
|
||||
.collect::<Vec<Vec<usize>>>();
|
||||
|
||||
original_ordering(n, &orderings)
|
||||
.iter()
|
||||
.for_each(|x| println!("{}", x));
|
||||
}
|
||||
Reference in New Issue
Block a user