complete 2022.rs 1264.rs 1318.rs 3731.rs 4633.rs 7140.rs 7541.rs 14315.rs 17204.rs 25208.rs
This commit is contained in:
56
storage/zeta/rs/completed/1022.rs
Normal file
56
storage/zeta/rs/completed/1022.rs
Normal file
@@ -0,0 +1,56 @@
|
||||
use std::{cmp::max, io::stdin};
|
||||
|
||||
fn get_value(r: i32, c: i32) -> i32 {
|
||||
let d = max(r.abs(), c.abs());
|
||||
|
||||
if d == 0 {
|
||||
return 1;
|
||||
}
|
||||
|
||||
let prev_max = (2 * d - 1) * (2 * d - 1);
|
||||
|
||||
if c == d && r < d {
|
||||
prev_max + (d - r)
|
||||
} else if r == -d {
|
||||
prev_max + 2 * d + (d - c)
|
||||
} else if c == -d {
|
||||
prev_max + 4 * d + (r + d)
|
||||
} else {
|
||||
prev_max + 6 * d + c + d
|
||||
}
|
||||
}
|
||||
|
||||
fn main() {
|
||||
let mut line = String::new();
|
||||
stdin().read_line(&mut line).unwrap();
|
||||
let mut iter = line
|
||||
.split_ascii_whitespace()
|
||||
.map(|x| x.parse::<i32>().unwrap());
|
||||
|
||||
let (r1, c1, r2, c2) = (
|
||||
iter.next().unwrap(),
|
||||
iter.next().unwrap(),
|
||||
iter.next().unwrap(),
|
||||
iter.next().unwrap(),
|
||||
);
|
||||
|
||||
let mut spiral = vec![vec![0; (c2 - c1 + 1) as usize]; (r2 - r1 + 1) as usize];
|
||||
let mut max_v = 0;
|
||||
for i in r1..=r2 {
|
||||
for j in c1..=c2 {
|
||||
let v = get_value(i, j);
|
||||
max_v = max(max_v, v);
|
||||
spiral[(i - r1) as usize][(j - c1) as usize] = v;
|
||||
}
|
||||
}
|
||||
|
||||
let offset = max_v.to_string().len();
|
||||
|
||||
for i in 0..(r2 - r1 + 1) as usize {
|
||||
for j in 0..(c2 - c1) as usize {
|
||||
print!("{:width$} ", spiral[i][j], width = offset);
|
||||
}
|
||||
print!("{:width$}", spiral[i][(c2 - c1) as usize], width = offset);
|
||||
println!();
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user