Module c

Expand description

§ABC 001 C - 風力観測

refs: https://atcoder.jp/contests/abc001/tasks/abc001_3

use proconio::input;

fn main() {
    input! {
        deg: i32,
        dis: i32,
    }

    let dir = match deg as f32 {
        d if (112.5..337.5).contains(&d) => "NNE",
        d if (337.5..562.5).contains(&d) => "NE",
        d if (562.5..787.5).contains(&d) => "ENE",
        d if (787.5..1012.5).contains(&d) => "E",
        d if (1012.5..1237.5).contains(&d) => "ESE",
        d if (1237.5..1462.5).contains(&d) => "SE",
        d if (1462.5..1687.5).contains(&d) => "SSE",
        d if (1687.5..1912.5).contains(&d) => "S",
        d if (1912.5..2137.5).contains(&d) => "SSW",
        d if (2137.5..2362.5).contains(&d) => "SW",
        d if (2362.5..2587.5).contains(&d) => "WSW",
        d if (2587.5..2812.5).contains(&d) => "W",
        d if (2812.5..3037.5).contains(&d) => "WNW",
        d if (3037.5..3262.5).contains(&d) => "NW",
        d if (3262.5..3487.5).contains(&d) => "NNW",
        _ => "N",
    };

    let w = match ((dis as f32) * 10.0 / 60.0).round() / 10.0 {
        d if (0.0..=0.2).contains(&d) => 0,
        d if (0.3..=1.5).contains(&d) => 1,
        d if (1.6..=3.3).contains(&d) => 2,
        d if (3.4..=5.4).contains(&d) => 3,
        d if (5.5..=7.9).contains(&d) => 4,
        d if (8.0..=10.7).contains(&d) => 5,
        d if (10.8..=13.8).contains(&d) => 6,
        d if (13.9..=17.1).contains(&d) => 7,
        d if (17.2..=20.7).contains(&d) => 8,
        d if (20.8..=24.4).contains(&d) => 9,
        d if (24.5..=28.4).contains(&d) => 10,
        d if (28.5..=32.6).contains(&d) => 11,
        _ => 12,
    };

    if w == 0 {
        println!("C {w}");
    } else {
        println!("{dir} {w}");
    }
}