bouzuya.hatenablog.com

ぼうずやのにっき

axum 0.7.2 / PAST #12 L

crates:axum 0.7.2 が出ていた。

https://github.com/tokio-rs/axum/blob/main/axum/CHANGELOG.md#072-03-december-2023

axum::body::to_bytes が含められていて嬉しい。これ面倒だったので。

crates:async-graphql はまだ対応していなさそう。 https://github.com/async-graphql/async-graphql/pull/1431


PAST #12 第12回 アルゴリズム実技検定 過去問

use proconio::{input, marker::Usize1};

fn main() {
    input! {
        n: usize,
        m: usize,
        a: [i64; n],
        pqlr: [(i64, Usize1, usize, usize); m],
    };
    let mut plr = vec![vec![]; n + 1];
    for (p, q, l, r) in pqlr {
        plr[q].push((p, l, r));
    }

    let inf = 1_i64 << 60;
    let mut ans = 0_i64;
    for k in 0..3 {
        let mut dp = vec![vec![-inf, -inf, -inf]; n + 1];
        dp[0][0] = 0_i64;
        for (p, l, r) in plr[0].iter().copied() {
            if l == 0 && (l + r) % 3 == k {
                dp[0][0] += p;
            }
        }
        for (i, plr_i) in plr.iter().enumerate().skip(1) {
            for j in 0..3 {
                dp[i][j] = (dp[i - 1][(j + 3 - 1) % 3] + a[i - 1]).max(dp[i - 1][j]);
                for (p, l, r) in plr_i.iter().copied() {
                    if l == j && (l + r) % 3 == k {
                        dp[i][j] += p;
                    }
                }
            }
        }
        ans = ans.max(dp[n][k]);
    }
    println!("{}", ans);
}

今日のコミット。