CSES - Datatähti 2022 loppu - Results
Submission details
Task:Kanava
Sender:xnor
Submission time:2022-01-22 18:06:23 +0200
Language:Rust
Status:READY
Result:0
Feedback
groupverdictscore
#10
Test results
testverdicttimescore
#10.01 s0details

Code

use std::io::{stdin, BufRead, BufReader};

fn main() {
    let mut stdin = BufReader::new(stdin());
    let mut cur_line = String::new();
    stdin.read_line(&mut cur_line).unwrap();

    if cur_line.trim() == "1" {
        cur_line.clear();
        stdin.read_line(&mut cur_line).unwrap();
        let k: usize = cur_line.trim().parse().unwrap();
        for _ in 0..k {
            let mut input = String::new();
            stdin.read_line(&mut input).unwrap();
            input = input.trim().into();

            for cp in input.bytes() {
                let c = cp - b'a';
                print_base_3(c / 12);
                print!("{}", (c % 12) / 6);
                print_base_3((c % 6) / 2);
                print!("{}", c % 2);
            }
            println!("_");
        }
    } else {
        let mut input = String::new();
        stdin.read_line(&mut input).unwrap();
        input = input.trim().into();

        let mut output = Vec::new();

        let mut cs = input.chars().collect::<Vec<_>>();

        loop {
            let mut cur = String::new();
            let mut i = 0;

            while cs.get(i).unwrap_or(&'_') != &'_' {
                let c = 12 * base_3_to_int(cs[i])
                    + 6 * base_2_to_int(cs[i + 1])
                    + 2 * base_3_to_int(cs[i + 2])
                    + base_2_to_int(cs[i + 3]);

                cur.push((c + b'a') as char);

                i += 4;
            }
            output.push(cur);

            if i == cs.len() {
                break;
            }

            cs = cs[i+1..].into();
        }

        println!("{}", output.len());
        for s in output {
            println!("{}", s);
        }
    }
}

fn print_base_3(x: u8) {
    match x {
        0 => print!("0"),
        1 => print!("1"),
        2 => print!("_"),
        _ => (),
    }
}

fn base_2_to_int(x: char) -> u8 {
    match x {
        '0' => 0,
        '1' => 1,
        _ => panic!(),
    }
}

fn base_3_to_int(x: char) -> u8 {
    match x {
        '0' => 0,
        '1' => 1,
        '_' => 2,
        _ => panic!(),
    }
}

Test details

Test 1

Verdict:

input
1
520
cbmcsyv
uvub
yh
...

correct output
(empty)

user output
(empty)

Error:
thread 'main' panicked at 'explicit panic', input/code.rs:78:14
note: run with `RUST_BACKTRACE=1` environment variable to display a backtrace