結果
| 問題 | No.3262 水色コーダーさん、その問題d問題ですよ?(1<=d<=N) |
| コンテスト | |
| ユーザー |
|
| 提出日時 | 2025-11-20 21:58:35 |
| 言語 | Rust (1.83.0 + proconio) |
| 結果 |
AC
|
| 実行時間 | 2 ms / 2,000 ms |
| コード長 | 665 bytes |
| コンパイル時間 | 12,419 ms |
| コンパイル使用メモリ | 399,680 KB |
| 実行使用メモリ | 7,848 KB |
| 最終ジャッジ日時 | 2025-11-20 21:58:50 |
| 合計ジャッジ時間 | 12,770 ms |
|
ジャッジサーバーID (参考情報) |
judge5 / judge3 |
(要ログイン)
| ファイルパターン | 結果 |
|---|---|
| sample | AC * 2 |
| other | AC * 24 |
ソースコード
use proconio::{fastout, input};
#[fastout]
fn main() {
input! {
n: usize,
diff: [(u16, u16); n],
}
println!("{}", output(solve(n, diff)));
}
fn solve(n: usize, diff: Vec<(u16, u16)>) -> u16 {
struct Fact<'a> {
f: &'a dyn Fn(&Fact, u16, u8) -> u16,
}
let dfs = Fact {
f: &|fact, prev_diff, flag| -> u16 {
if flag as u16 == (1 << n) - 1 {
return 1;
}
let mut ans = 0;
for i in 0..n {
let (l, r) = diff[i];
if (flag >> i) & 1 == 0 && prev_diff <= r {
ans += (fact.f)(&fact, prev_diff.max(l), flag | (1 << i));
}
}
ans
},
};
(dfs.f)(&dfs, 0, 0)
}
fn output(ans: u16) -> u16 {
ans
}