ABC 045, finished completely
This commit is contained in:
@@ -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});
|
||||
}
|
||||
@@ -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});
|
||||
}
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user