Cod sursa(job #3302651)

Utilizator TarceaIonutTarcea Tudor Ionut TarceaIonut Data 9 iulie 2025 19:38:14
Problema Jocul Flip Scor 30
Compilator rs Status done
Runda Arhiva de probleme Marime 1.6 kb

fn flip_line (a: &mut Vec<Vec<i32>>, n:i32, m:i32) -> bool{
    let mut ok = false;
    for i in 0..n {
        let mut sum = 0;
        for j in 0..m {
            sum += a[i as usize][j as usize];
        }
        if sum < 0 {
            ok = true;
            for j in 0..m {
                a[i as usize][j as usize] *= -1;
            }
        }
    }
    return ok;
}
fn flip_col (a: &mut Vec<Vec<i32>>, n:i32, m:i32) -> bool{
    let mut ok = false;
    for j in 0..m {
        let mut sum = 0;
        for i in 0..n {
            sum += a[i as usize][j as usize];
        }
        if sum < 0 {
            ok = true;
            for i in 0..n {
                a[i as usize][j as usize] *= -1;
            }
        }
    }
    return ok;
}
fn main() {
    let file_content = std::fs::read_to_string("flip.in").unwrap();
    let file_lines = file_content.split_whitespace().collect::<Vec<&str>>();
    let n = file_lines[0].parse::<usize>().unwrap();
    let m = file_lines[1].parse::<usize>().unwrap();
    let mut a: Vec<Vec<i32>> = vec![vec![0; m]; n];
    {
        let mut number = 2;
        for i in 0..n {
            for j in 0..m {
                a[i][j] = file_lines[number].parse::<i32>().unwrap();
                number += 1;
            }
        }
    }
    
    while flip_col(&mut a, n as i32, m as i32) || flip_line(&mut a, n as i32, m as i32) {
        
    }

    {
        let mut sum = 0;
        for i in 0..n {
            for j in 0..m {
                sum += a[i as usize][j as usize];
            }
        }
        std::fs::write("flip.out", format!("{}", sum)).unwrap();
    }
    
    
}