Cod sursa(job #3228745)

Utilizator andreioneaAndrei Onea andreionea Data 10 mai 2024 21:26:32
Problema Statistici de ordine Scor 100
Compilator rs Status done
Runda Arhiva educationala Marime 1.04 kb
use std::{collections::BinaryHeap, fs::File, io::{BufRead, BufReader, BufWriter, Write}};

fn main() {
    let mut input_file = BufReader::new(File::open("sdo.in").unwrap());
    let mut first_line = String::new();
    
    let _ = input_file.read_line(&mut first_line).unwrap();
    let (n, k) = first_line.trim().split_once(' ').unwrap();
    let n = n.parse::<usize>().unwrap();
    let k = k.parse::<usize>().unwrap();
    let limit = k;
    let mut heap = BinaryHeap::with_capacity(limit);
    for _ in 0..n {
        let mut second_line = Vec::with_capacity(12);
        input_file.read_until(b' ', &mut second_line).unwrap();
        let num = String::from_utf8(second_line).unwrap();
        let num = num.trim().parse::<u32>().unwrap();
        if heap.len() == limit && *heap.peek().unwrap() > num {
            heap.pop();
        }
        if heap.len() < limit {
            heap.push(num);
        }
    }
    let mut output_file = BufWriter::new(File::create("sdo.out").unwrap());
    let _ = writeln!(output_file, "{}", heap.pop().unwrap()).unwrap();
}