提出 #33573629


ソースコード 拡げる

use proconio::input;

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

    // Hu--Tucker-based na\"ive algorithm

    let mut res = 0;
    let oo = 10_i64.pow(16);
    let mut single = vec![true; n];
    let mut a: Vec<_> = a.iter().map(|&ai| Some(ai)).collect();
    for _ in 1..n {
        let mut pair = (n, n);
        let mut cost = oo;
        for l in 0..n {
            let al = if let Some(c) = a[l] { c } else { continue };
            for r in l + 1..n {
                let ar = if let Some(c) = a[r] { c } else { continue };
                if cost > al + ar {
                    pair = (l, r);
                    cost = al + ar;
                }
                if single[r] {
                    break;
                }
            }
        }

        let (l, r) = pair;
        res += cost;
        a[l] = Some(cost);
        a[r].take();
        single[l] = false;
        single[r] = false;
    }

    println!("{}", res);
}

提出情報

提出日時
問題 N - Slimes
ユーザ rsk0315
言語 Rust (1.42.0)
得点 100
コード長 1011 Byte
結果 AC
実行時間 16 ms
メモリ 2120 KiB

ジャッジ結果

セット名 All
得点 / 配点 100 / 100
結果
AC × 16
セット名 テストケース
All 0_00, 0_01, 0_02, 0_03, 1_00, 1_01, 1_02, 1_03, 1_04, 1_05, 1_06, 1_07, 1_08, 1_09, 1_10, 1_11
ケース名 結果 実行時間 メモリ
0_00 AC 5 ms 2108 KiB
0_01 AC 2 ms 2092 KiB
0_02 AC 2 ms 2120 KiB
0_03 AC 1 ms 2048 KiB
1_00 AC 2 ms 2044 KiB
1_01 AC 16 ms 2112 KiB
1_02 AC 14 ms 2076 KiB
1_03 AC 8 ms 2080 KiB
1_04 AC 8 ms 2088 KiB
1_05 AC 11 ms 2108 KiB
1_06 AC 10 ms 2048 KiB
1_07 AC 5 ms 2064 KiB
1_08 AC 7 ms 2120 KiB
1_09 AC 8 ms 2120 KiB
1_10 AC 8 ms 2096 KiB
1_11 AC 10 ms 1956 KiB