owlgo 0.1.7

A lightweight CLI to assist in solving CP problems
use std::io;

fn main() {
    let mut buffer = String::new();
    io::stdin().read_line(&mut buffer).expect("%d %d %d");

    let (rneed, gneed, bneed) = {
        let ins: Vec<usize> = buffer
            .trim()
            .split(' ')
            .map(|s| s.parse::<usize>().unwrap())
            .collect();

        (ins[0], ins[1], ins[2])
    };

    buffer.clear();

    io::stdin().read_line(&mut buffer).expect("%d %d %d");

    let (rhave, ghave, bhave) = {
        let ins: Vec<usize> = buffer
            .trim()
            .split(' ')
            .map(|s| s.parse::<usize>().unwrap())
            .collect();

        (ins[0], ins[1], ins[2])
    };

    buffer.clear();

    io::stdin().read_line(&mut buffer).expect("%d %d");

    let (rg, gb) = {
        let ins: Vec<usize> = buffer
            .trim()
            .split(' ')
            .map(|s| s.parse::<usize>().unwrap())
            .collect();

        (ins[0], ins[1])
    };

    if rhave + rg < rneed || bhave + gb < bneed {
        println!("-1");
        return;
    }

    let rdef = if rhave < rneed { rneed - rhave } else { 0 };

    let bdef = if bhave < bneed { bneed - bhave } else { 0 };

    if ghave + (rg - rdef) + (gb - bdef) < gneed {
        println!("-1");
        return;
    }

    let gdef = if ghave < gneed { gneed - ghave } else { 0 };

    println!("{}", rdef + gdef + bdef);
}