Submission #73932292


Source Code Expand

use proconio::input;

fn main() {
    input! {
        n: usize,
        coords: [(usize, usize); n],
    }

    let mut points: Vec<(usize, usize, usize)> = coords
        .into_iter()
        .enumerate()
        .map(|(i, (x, y))| (x, y, i + 1))
        .collect();

    points.sort_by_key(|k| k.0);
    let block_size = (n as f64).sqrt() as usize + 1;
    
    let mut path: Vec<usize> = Vec::with_capacity(n);
    let mut i = 0;
    let mut ascending = true;

    while i < n {
        let end = (i + block_size).min(n);
        let mut block: Vec<(usize, usize, usize)> = points[i..end].to_vec();

        if ascending {
            block.sort_by_key(|k| k.1); // Y 昇順
        } else {
            block.sort_by(|a, b| b.1.cmp(&a.1)); // Y 降順
        }

        for p in block {
            path.push(p.2);
        }

        ascending = !ascending;
        i = end;
    }

    let start_idx = path.iter().position(|&x| x == 1).unwrap();
    let mut final_path = Vec::with_capacity(n);
    for k in 0..n {
        final_path.push(path[(start_idx + k) % n]);
    }

    println!(
        "{}",
        final_path
            .iter()
            .map(|x| x.to_string())
            .collect::<Vec<String>>()
            .join(" ")
    );
}

Submission Info

Submission Time
Task F - Authentic Traveling Salesman Problem
User memoka
Language Rust (rustc 1.89.0)
Score 525
Code Size 1304 Byte
Status AC
Exec Time 14 ms
Memory 8040 KiB

Judge Result

Set Name Sample All
Score / Max Score 0 / 0 525 / 525
Status
AC × 2
AC × 78
Set Name Test Cases
Sample 00_sample_00.txt, 00_sample_01.txt
All 00_sample_00.txt, 00_sample_01.txt, 01_random_00.txt, 01_random_01.txt, 01_random_02.txt, 01_random_03.txt, 01_random_04.txt, 01_random_05.txt, 01_random_06.txt, 01_random_07.txt, 01_random_08.txt, 01_random_09.txt, 02_corner_1_00.txt, 02_corner_1_01.txt, 02_corner_1_02.txt, 02_corner_1_03.txt, 02_corner_1_04.txt, 02_corner_1_05.txt, 02_corner_1_06.txt, 02_corner_1_07.txt, 02_corner_1_08.txt, 02_corner_1_09.txt, 02_corner_1_10.txt, 02_corner_1_11.txt, 02_corner_1_12.txt, 02_corner_1_13.txt, 02_corner_1_14.txt, 02_corner_1_15.txt, 02_corner_1_16.txt, 02_corner_1_17.txt, 02_corner_1_18.txt, 03_corner_2_00.txt, 03_corner_2_01.txt, 03_corner_2_02.txt, 03_corner_2_03.txt, 03_corner_2_04.txt, 03_corner_2_05.txt, 03_corner_2_06.txt, 03_corner_2_07.txt, 03_corner_2_08.txt, 03_corner_2_09.txt, 03_corner_2_10.txt, 03_corner_2_11.txt, 03_corner_2_12.txt, 03_corner_2_13.txt, 03_corner_2_14.txt, 03_corner_2_15.txt, 03_corner_2_16.txt, 03_corner_2_17.txt, 03_corner_2_18.txt, 04_corner_3_00.txt, 04_corner_3_01.txt, 04_corner_3_02.txt, 04_corner_3_03.txt, 04_corner_3_04.txt, 04_corner_3_05.txt, 04_corner_3_06.txt, 04_corner_3_07.txt, 05_corner_4_00.txt, 05_corner_4_01.txt, 05_corner_4_02.txt, 05_corner_4_03.txt, 05_corner_4_04.txt, 05_corner_4_05.txt, 05_corner_4_06.txt, 05_corner_4_07.txt, 05_corner_4_08.txt, 05_corner_4_09.txt, 05_corner_4_10.txt, 05_corner_4_11.txt, 05_corner_4_12.txt, 05_corner_4_13.txt, 05_corner_4_14.txt, 05_corner_4_15.txt, 05_corner_4_16.txt, 05_corner_4_17.txt, 05_corner_4_18.txt, 05_corner_4_19.txt
Case Name Status Exec Time Memory
00_sample_00.txt AC 1 ms 1964 KiB
00_sample_01.txt AC 1 ms 2016 KiB
01_random_00.txt AC 14 ms 7832 KiB
01_random_01.txt AC 13 ms 7860 KiB
01_random_02.txt AC 13 ms 8040 KiB
01_random_03.txt AC 13 ms 7996 KiB
01_random_04.txt AC 13 ms 7900 KiB
01_random_05.txt AC 13 ms 7860 KiB
01_random_06.txt AC 13 ms 7940 KiB
01_random_07.txt AC 13 ms 7932 KiB
01_random_08.txt AC 13 ms 7860 KiB
01_random_09.txt AC 13 ms 7848 KiB
02_corner_1_00.txt AC 13 ms 7800 KiB
02_corner_1_01.txt AC 13 ms 7908 KiB
02_corner_1_02.txt AC 12 ms 7852 KiB
02_corner_1_03.txt AC 13 ms 7808 KiB
02_corner_1_04.txt AC 12 ms 7912 KiB
02_corner_1_05.txt AC 12 ms 7736 KiB
02_corner_1_06.txt AC 12 ms 7848 KiB
02_corner_1_07.txt AC 12 ms 7788 KiB
02_corner_1_08.txt AC 12 ms 7976 KiB
02_corner_1_09.txt AC 12 ms 7852 KiB
02_corner_1_10.txt AC 13 ms 7900 KiB
02_corner_1_11.txt AC 13 ms 7820 KiB
02_corner_1_12.txt AC 12 ms 7756 KiB
02_corner_1_13.txt AC 12 ms 7856 KiB
02_corner_1_14.txt AC 12 ms 7884 KiB
02_corner_1_15.txt AC 12 ms 7904 KiB
02_corner_1_16.txt AC 13 ms 7832 KiB
02_corner_1_17.txt AC 13 ms 8032 KiB
02_corner_1_18.txt AC 13 ms 7756 KiB
03_corner_2_00.txt AC 13 ms 7804 KiB
03_corner_2_01.txt AC 13 ms 7960 KiB
03_corner_2_02.txt AC 12 ms 7828 KiB
03_corner_2_03.txt AC 12 ms 7888 KiB
03_corner_2_04.txt AC 12 ms 7960 KiB
03_corner_2_05.txt AC 12 ms 7860 KiB
03_corner_2_06.txt AC 12 ms 8008 KiB
03_corner_2_07.txt AC 12 ms 7820 KiB
03_corner_2_08.txt AC 12 ms 7960 KiB
03_corner_2_09.txt AC 13 ms 7788 KiB
03_corner_2_10.txt AC 13 ms 7912 KiB
03_corner_2_11.txt AC 13 ms 7916 KiB
03_corner_2_12.txt AC 12 ms 7820 KiB
03_corner_2_13.txt AC 12 ms 7984 KiB
03_corner_2_14.txt AC 12 ms 7900 KiB
03_corner_2_15.txt AC 12 ms 8040 KiB
03_corner_2_16.txt AC 13 ms 7900 KiB
03_corner_2_17.txt AC 13 ms 7880 KiB
03_corner_2_18.txt AC 13 ms 7860 KiB
04_corner_3_00.txt AC 13 ms 7880 KiB
04_corner_3_01.txt AC 12 ms 7784 KiB
04_corner_3_02.txt AC 13 ms 7916 KiB
04_corner_3_03.txt AC 12 ms 7900 KiB
04_corner_3_04.txt AC 12 ms 7828 KiB
04_corner_3_05.txt AC 13 ms 7832 KiB
04_corner_3_06.txt AC 12 ms 7884 KiB
04_corner_3_07.txt AC 12 ms 7780 KiB
05_corner_4_00.txt AC 12 ms 7848 KiB
05_corner_4_01.txt AC 12 ms 7796 KiB
05_corner_4_02.txt AC 12 ms 7836 KiB
05_corner_4_03.txt AC 12 ms 7860 KiB
05_corner_4_04.txt AC 12 ms 7788 KiB
05_corner_4_05.txt AC 12 ms 7804 KiB
05_corner_4_06.txt AC 12 ms 7872 KiB
05_corner_4_07.txt AC 12 ms 7768 KiB
05_corner_4_08.txt AC 12 ms 7816 KiB
05_corner_4_09.txt AC 12 ms 7904 KiB
05_corner_4_10.txt AC 12 ms 7852 KiB
05_corner_4_11.txt AC 12 ms 7820 KiB
05_corner_4_12.txt AC 12 ms 7908 KiB
05_corner_4_13.txt AC 12 ms 7852 KiB
05_corner_4_14.txt AC 12 ms 7852 KiB
05_corner_4_15.txt AC 12 ms 7796 KiB
05_corner_4_16.txt AC 13 ms 7848 KiB
05_corner_4_17.txt AC 13 ms 7756 KiB
05_corner_4_18.txt AC 13 ms 7792 KiB
05_corner_4_19.txt AC 13 ms 7932 KiB