Cod sursa(job #3313638)

Utilizator game_difficultyCalin Crangus game_difficulty Data 5 octombrie 2025 17:45:43
Problema Combinari Scor 100
Compilator rs Status done
Runda Arhiva educationala Marime 1.09 kb
use std::{fs::File, vec};
#[allow(unused_imports)]
use std::io::{BufRead, BufReader, Read, Write};

const FILE: &'static str = "combinari";

fn bkt(pas: usize, &n: &usize, &k: &usize, v: &mut Vec<usize>, fout: &mut Vec<u8>) {
    if pas != k {
        let last = if v.len() > 0 { v[v.len() - 1] } else { 0 };
        for i in last + 1..=n {
            v.push(i);
            bkt(pas + 1, &n, &k, v, fout);
            v.pop();
        }
    } else {
        for x in v {
            write!(fout, "{} ", x).unwrap();
        }
        write!(fout, "\n").unwrap();
    }
}

fn main() {
    let mut fin = BufReader::new(File::open(format!("{}.in", FILE)).unwrap());
    let mut fout = File::create(format!("{}.out", FILE)).unwrap();

    let mut input = String::new();
    fin.read_line(&mut input).unwrap();

    let [n, k] = input.trim().split_ascii_whitespace().map(|x| x.parse::<usize>().unwrap()).collect::<Vec<usize>>()[..] else {
        panic!();
    };

    let mut buffer = vec![];
    bkt(0, &n, &k, &mut vec![], &mut buffer);
    write!(&mut fout, "{}", String::from_utf8(buffer).unwrap()).unwrap();
}