結果

問題 No.3262 水色コーダーさん、その問題d問題ですよ?(1<=d<=N)
ユーザー The_Bouningeeeen
提出日時 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
権限があれば一括ダウンロードができます

ソースコード

diff #

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;
}
0