結果
| 問題 |
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;
}