結果

問題 No.3597 Queen Score Attack 2
コンテスト
ユーザー urectanc
提出日時 2026-07-24 21:35:41
言語 Rust
(1.94.0 + proconio + num + itertools)
コンパイル:
/usr/bin/rustc_custom
実行:
./target/release/main
結果
AC  
実行時間 87 ms / 2,000 ms
+ 327µs
コード長 828 bytes
記録
記録タグの例:
初AC ショートコード 純ショートコード 純主流ショートコード 最速実行時間
コンパイル時間 1,206 ms
コンパイル使用メモリ 185,440 KB
実行使用メモリ 13,824 KB
最終ジャッジ日時 2026-07-24 21:35:52
合計ジャッジ時間 5,781 ms
ジャッジサーバーID
(参考情報)
judge1_0 / judge3_0
このコードへのチャレンジ
(要ログイン)
ファイルパターン 結果
sample AC * 3
other AC * 18
権限があれば一括ダウンロードができます
コンパイルメッセージ
warning: unused variable: `h`
 --> src/main.rs:5:9
  |
5 |         h: usize, w: usize, sx: Usize1, sy: Usize1, n: usize,
  |         ^ help: if this is intentional, prefix it with an underscore: `_h`
  |
  = note: `#[warn(unused_variables)]` (part of `#[warn(unused)]`) on by default

warning: unused variable: `w`
 --> src/main.rs:5:19
  |
5 |         h: usize, w: usize, sx: Usize1, sy: Usize1, n: usize,
  |                   ^ help: if this is intentional, prefix it with an underscore: `_w`

ソースコード

diff #
raw source code

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

fn main() {
    input! {
        h: usize, w: usize, sx: Usize1, sy: Usize1, n: usize,
        xyc: [(Usize1, Usize1, i64); n],
    }

    let mut prev = (sx, sy);
    let mut dp = [0, -1];
    for &(x, y, c) in &xyc {
        let mut ndp = [0, -1];
        if dp[0] >= 0 && check((x, y), prev) {
            ndp[0] = ndp[0].max(dp[0] + c);
        }
        if dp[1] >= 0 {
            ndp[0] = ndp[0].max(dp[1] + c);
        }
        ndp[1] = ndp[1].max(dp[0]).max(dp[1]);
        dp = ndp;
        prev = (x, y);
    }
    let ans = dp.iter().max().unwrap();
    println!("{ans}");
}

fn check(now: (usize, usize), prev: (usize, usize)) -> bool {
    now.0 == prev.0
        || now.1 == prev.1
        || now.0 + now.1 == prev.0 + prev.1
        || now.0 + prev.1 == prev.0 + now.1
}
0