Cod sursa(job #3340976)

Utilizator petro123Alex Ionel petro123 Data 17 februarie 2026 15:30:31
Problema Generare de permutari Scor 100
Compilator rs Status done
Runda Arhiva educationala Marime 1.07 kb
use std::io::{BufWriter, Write};
use std::fs::{File, self};

fn main() -> std::io::Result<()> {
    let n: usize = fs::read_to_string("permutari.in")?
        .trim()
        .parse::<usize>()
        .unwrap();
    let mut writer = BufWriter::new(File::create("permutari.out")?);
    let mut bktvec: Vec<usize> = vec![];
    let mut used: Vec<bool> = vec![false; n + 1];

    fn bkt(
        n: usize,
        pas: usize,
        bktvec: &mut Vec<usize>,
        used: &mut Vec<bool>,
        writer: &mut BufWriter<File>,
    ) -> std::io::Result<()> {
        if pas == n + 1 {
            for item in bktvec.iter() {
                write!(writer, "{} ", item)?;
            }
            writeln!(writer)?;
            return Ok(());
        }
        for i in 1..=n {
            if !used[i] {
                used[i] = true;
                bktvec.push(i);
                bkt(n, pas + 1, bktvec, used, writer)?;
                bktvec.pop();
                used[i] = false;
            }
        }
        Ok(())
    }

    bkt(n, 1, &mut bktvec, &mut used, &mut writer)?;
    Ok(())
}