Cod sursa(job #3302202)

Utilizator luiz_felipeLuiz Felipe luiz_felipe Data 4 iulie 2025 19:45:42
Problema Elementul majoritar Scor 100
Compilator rs Status done
Runda Arhiva educationala Marime 0.99 kb
use std::collections::HashMap;
use std::fs::File;
use std::io::{BufRead, BufReader, BufWriter, Write};

fn main() {
    let input = File::open("elmaj.in").expect("Can't open input");
    let reader = BufReader::new(input);
    let mut lines = reader.lines();

    let n = lines.next().unwrap().unwrap().trim().parse::<usize>().unwrap();
    let elems: Vec<u32> = lines.next().unwrap().unwrap()
        .split_whitespace()
        .map(|x| x.parse().unwrap())
        .collect();

    let mut freq = HashMap::new();

    for &val in &elems {
        let count = freq.entry(val).or_insert(0);
        *count += 1;
    }

    let mut major = -1;
    for (&key, &value) in freq.iter() {
        if value >= n / 2 + 1 {
            major = key as i32;
            break;
        }
    }

    let mut output = BufWriter::new(File::create("elmaj.out").expect("Can't create output"));
    writeln!(output, "{}", if major == -1 { "-1".to_string() } else { format!("{} {}", major, freq[&(major as u32)]) }).unwrap();
}