結果
問題 |
No.3262 水色コーダーさん、その問題d問題ですよ?(1<=d<=N)
|
ユーザー |
|
提出日時 | 2025-09-09 22:20:58 |
言語 | Rust (1.83.0 + proconio) |
結果 |
AC
|
実行時間 | 2 ms / 2,000 ms |
コード長 | 1,050 bytes |
コンパイル時間 | 12,501 ms |
コンパイル使用メモリ | 400,044 KB |
実行使用メモリ | 7,720 KB |
最終ジャッジ日時 | 2025-09-09 22:21:21 |
合計ジャッジ時間 | 14,312 ms |
ジャッジサーバーID (参考情報) |
judge4 / judge1 |
(要ログイン)
ファイルパターン | 結果 |
---|---|
sample | AC * 2 |
other | AC * 24 |
ソースコード
use proconio::input; fn main() { input! { n: usize, lr: [(usize, usize); n], } let mut index: Vec<usize> = (0..n).collect(); let mut ans = 0; loop { let mut diff = 0; let mut flag = true; for &i in &index { let (l, r) = lr[i]; if diff > r { flag = false; } diff = diff.max(l); } if flag { ans += 1; } if !next_permutation(&mut index) { break; } } println!("{}", ans); } fn next_permutation(arr: &mut Vec<usize>) -> bool { let mut l = usize::MAX; for i in (0..arr.len() - 1).rev() { if arr[i] < arr[i + 1] { l = i; break; } } if l == usize::MAX { return false; } let mut r = usize::MAX; for i in (0..arr.len()).rev() { if arr[l] < arr[i] { r = i; break; } } arr.swap(l, r); arr[l + 1..].reverse(); return true; }