Submission #32641571


Source Code Expand

fn read<T: std::str::FromStr>(
    stdin_lock: &mut std::io::StdinLock,
    buf: &mut Vec<u8>,
    delimiter: u8,
) -> T {
    buf.clear();
    let l = std::io::BufRead::read_until(stdin_lock, delimiter, buf).unwrap();
    buf.truncate(l - 1); // remove delimiter
    let s = unsafe { std::str::from_utf8_unchecked(&buf) };
    s.parse().unwrap_or_else(|_| panic!("read"))
}

fn main() {
    let stdin = std::io::stdin();
    let mut stdin_lock = stdin.lock();
    let mut buf: Vec<u8> = Vec::new();
    let n: usize = read(&mut stdin_lock, &mut buf, b'\n');

    let inf = n + 1;
    let mut d_1 = vec![inf; n + 1];
    let mut d_2 = vec![inf; n + 1];
    let mut count3 = vec![];
    let mut min = inf;
    for i in 3..=n {
        println!("? 1 {}", i);
        d_1[i] = read(&mut stdin_lock, &mut buf, b'\n');
        println!("? 2 {}", i);
        d_2[i] = read(&mut stdin_lock, &mut buf, b'\n');
        let d_i = d_1[i] + d_2[i];
        min = min.min(d_i);
        if d_i == 3 {
            count3.push(i);
        }
    }
    if min != 3 {
        println!("! {}", min);
        return;
    }
    if count3.len() != 2 {
        println!("! 1");
        return;
    }

    let (x, y) = (count3[0], count3[1]);
    println!("? {} {}", x, y);
    let d_xy: usize = read(&mut stdin_lock, &mut buf, b'\n');
    println!("! {}", if d_xy == 1 { 3 } else { 1 });
}

Submission Info

Submission Time
Task C - Tree Queries
User bouzuya
Language Rust (1.42.0)
Score 500
Code Size 1366 Byte
Status AC
Exec Time 15 ms
Memory 3872 KiB

Judge Result

Set Name Sample All
Score / Max Score 0 / 0 500 / 500
Status
AC × 1
AC × 39
Set Name Test Cases
Sample 00_sample_00.txt
All 00_sample_00.txt, 01_shnd_00.txt, 01_shnd_01.txt, 01_shnd_02.txt, 01_shnd_03.txt, 02_srnd_00.txt, 02_srnd_01.txt, 02_srnd_02.txt, 02_srnd_03.txt, 02_srnd_04.txt, 02_srnd_05.txt, 02_srnd_06.txt, 03_rnd_00.txt, 03_rnd_01.txt, 03_rnd_02.txt, 03_rnd_03.txt, 03_rnd_04.txt, 03_rnd_05.txt, 03_rnd_06.txt, 04_killer_00.txt, 04_killer_01.txt, 04_killer_02.txt, 04_killer_03.txt, 04_killer_04.txt, 04_killer_05.txt, 04_killer_06.txt, 04_killer_07.txt, 04_killer_08.txt, 04_killer_09.txt, 04_killer_10.txt, 04_killer_11.txt, 04_killer_12.txt, 04_killer_13.txt, 04_killer_14.txt, 04_killer_15.txt, 04_killer_16.txt, 04_killer_17.txt, 05_max_00.txt, 05_max_01.txt
Case Name Status Exec Time Memory
00_sample_00.txt AC 12 ms 3768 KiB
01_shnd_00.txt AC 6 ms 3764 KiB
01_shnd_01.txt AC 6 ms 3744 KiB
01_shnd_02.txt AC 6 ms 3688 KiB
01_shnd_03.txt AC 4 ms 3820 KiB
02_srnd_00.txt AC 6 ms 3648 KiB
02_srnd_01.txt AC 5 ms 3800 KiB
02_srnd_02.txt AC 5 ms 3804 KiB
02_srnd_03.txt AC 4 ms 3784 KiB
02_srnd_04.txt AC 5 ms 3800 KiB
02_srnd_05.txt AC 7 ms 3688 KiB
02_srnd_06.txt AC 6 ms 3688 KiB
03_rnd_00.txt AC 11 ms 3784 KiB
03_rnd_01.txt AC 9 ms 3756 KiB
03_rnd_02.txt AC 9 ms 3844 KiB
03_rnd_03.txt AC 9 ms 3724 KiB
03_rnd_04.txt AC 11 ms 3716 KiB
03_rnd_05.txt AC 10 ms 3748 KiB
03_rnd_06.txt AC 9 ms 3792 KiB
04_killer_00.txt AC 14 ms 3840 KiB
04_killer_01.txt AC 14 ms 3856 KiB
04_killer_02.txt AC 8 ms 3836 KiB
04_killer_03.txt AC 9 ms 3864 KiB
04_killer_04.txt AC 11 ms 3820 KiB
04_killer_05.txt AC 9 ms 3800 KiB
04_killer_06.txt AC 11 ms 3808 KiB
04_killer_07.txt AC 10 ms 3808 KiB
04_killer_08.txt AC 9 ms 3836 KiB
04_killer_09.txt AC 15 ms 3796 KiB
04_killer_10.txt AC 8 ms 3820 KiB
04_killer_11.txt AC 8 ms 3872 KiB
04_killer_12.txt AC 13 ms 3832 KiB
04_killer_13.txt AC 10 ms 3792 KiB
04_killer_14.txt AC 11 ms 3728 KiB
04_killer_15.txt AC 9 ms 3788 KiB
04_killer_16.txt AC 11 ms 3824 KiB
04_killer_17.txt AC 11 ms 3676 KiB
05_max_00.txt AC 10 ms 3796 KiB
05_max_01.txt AC 8 ms 3680 KiB