結果

問題 No.3596 Queen Score Attack 1
コンテスト
ユーザー urectanc
提出日時 2026-07-24 22:34:21
言語 Rust
(1.94.0 + proconio + num + itertools)
コンパイル:
/usr/bin/rustc_custom
実行:
./target/release/main
結果
AC  
実行時間 1 ms / 2,000 ms
+ 981µs
コード長 974 bytes
記録
記録タグの例:
初AC ショートコード 純ショートコード 純主流ショートコード 最速実行時間
コンパイル時間 8,457 ms
コンパイル使用メモリ 193,916 KB
実行使用メモリ 5,888 KB
最終ジャッジ日時 2026-07-24 22:34:35
合計ジャッジ時間 10,460 ms
ジャッジサーバーID
(参考情報)
judge3_0 / judge1_0
このコードへのチャレンジ
(要ログイン)
ファイルパターン 結果
sample AC * 1
other AC * 31
権限があれば一括ダウンロードができます

ソースコード

diff #
raw source code

use std::collections::HashMap;

use proconio::{fastout, input};

#[fastout]
fn main() {
    input! { t: usize }

    for _ in 0..t {
        let ans = solve();
        println!("{}", if ans { "finite" } else { "infinite" });
    }
}

fn solve() -> bool {
    input! {
        h: usize, w: usize,
        a: [[i64; w]; h],
    }

    let inf = 1i64 << 60;
    let check = |f: fn(usize, usize) -> usize| {
        let mut max = HashMap::new();
        for i in 0..h {
            for j in 0..w {
                let m = max.entry(f(i, j)).or_insert(-inf);
                if *m + a[i][j] > 0 {
                    return true;
                }
                *m = (*m).max(a[i][j]);
            }
        }
        false
    };

    if check(|i, _j| i) {
        return false;
    }
    if check(|_i, j| j) {
        return false;
    }
    if check(|i, j| i + j) {
        return false;
    }
    if check(|i, j| i.wrapping_sub(j)) {
        return false;
    }
    true
}
0