ABC 045, finished completely

This commit is contained in:
2022-05-30 14:16:49 +02:00
parent 0df49b05eb
commit 1835efd9bf
2 changed files with 73 additions and 4 deletions

View File

@@ -1,5 +1,12 @@
use proconio::input;
fn dfs(digits: &Vec<u64>, i: usize, sum: u64, counter: u64) -> u64{
if i < digits.len(){
dfs(digits, i + 1, sum + counter, digits[i]) + dfs(digits, i + 1, sum, counter * 10 + digits[i])
} else{
sum + counter
}
}
fn main() {
input!{
@@ -7,8 +14,7 @@ fn main() {
};
let ns : Vec<u64> = s.chars().map(|c| u64::from(c.to_digit(10).unwrap())).collect();
let nns = vec![ns];
let mut result : u64 = 0;
let result = dfs(&ns, 1, 0, ns[0]);
println!("{}", {result});
}
}

View File

@@ -1,5 +1,68 @@
use proconio::input;
use std::collections::HashSet;
use std::cmp::{min, max};
fn check_subrectangle(middle: (u64, u64), painted: &HashSet<(u64, u64)>) -> u64{
let (y, x) = middle;
let mut result = 0;
for i in (x-1)..=(x+1) {
for j in (y-1)..=(y+1) {
if painted.contains(&(j, i)){
result += 1;
}
}
}
result
}
fn check_coords(painted_pair: (u64, u64), canvas_size: (u64, u64), painted: &HashSet<(u64, u64)>, checked_tiles: &mut HashSet<(u64, u64)>, result: &mut [u64; 10]){
let (y, x) = painted_pair;
let (h, w) = canvas_size;
for i in max(2, x - 1)..=min(x + 1, w - 1) {
for j in max(2, y - 1)..=min(y + 1, h - 1){
if !checked_tiles.contains(&(j, i)) {
result[check_subrectangle((j, i), painted) as usize] += 1;
checked_tiles.insert((j, i));
// println!("({},{})", {j}, {i});
}
}
}
}
fn main() {
todo!();
input!{
h: u64,
w: u64,
n: u64,
ab_pairs: [(u64, u64); n],
};
let mut painted = HashSet::new();
let mut checked_tiles = HashSet::new();
let mut result = [0; 10];
for i in 0..n {
painted.insert(ab_pairs[i as usize]);
}
for i in 0..n{
let coord = ab_pairs[i as usize];
check_coords(coord, (h, w), &painted, &mut checked_tiles, &mut result);
}
// for r in result {
// println!("{}", {r});
// }
let max_rectangles = (h - 2) * (w - 2);
let current_rectangles : u64 = result.iter().sum();
result[0] += max_rectangles - current_rectangles;
for r in &result {
println!("{}", {r});
}
}