summaryrefslogtreecommitdiff
path: root/2025/09/rust/src/main.rs
blob: 0a60ece5df912867b9d195abfceebc57718d99f6 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
use std::io;

fn main() {
    let pts = io::stdin()
        .lines()
        .flatten()
        .map(|line| {
            let (x, y) = line.split_once(',').unwrap();
            (x.parse().unwrap(), y.parse().unwrap())
        })
        .collect::<Vec<(u64, u64)>>();

    let silver: u64 = pts
        .iter()
        .enumerate()
        .flat_map(|(idx, p1)| pts.iter().take(idx).map(move |p2| area(*p1, *p2)))
        .max()
        .unwrap();

    let gold: u64 = 0;
    println!("silver: {silver}");
    println!("gold: {gold}");
}

fn area((x1, y1): (u64, u64), (x2, y2): (u64, u64)) -> u64 {
    (x1.abs_diff(x2) + 1) * (y1.abs_diff(y2) + 1)
}