結果

問題 No.2957 Combo Deck Builder
ユーザー atcoder8atcoder8
提出日時 2024-11-08 23:13:28
言語 Rust
(1.77.0 + proconio)
結果
WA  
実行時間 -
コード長 1,100 bytes
コンパイル時間 13,966 ms
コンパイル使用メモリ 378,268 KB
実行使用メモリ 18,048 KB
最終ジャッジ日時 2024-11-08 23:13:47
合計ジャッジ時間 19,289 ms
ジャッジサーバーID
(参考情報)
judge2 / judge5
このコードへのチャレンジ
(要ログイン)

テストケース

テストケース表示
入力 結果 実行時間
実行使用メモリ
testcase_00 AC 1 ms
5,248 KB
testcase_01 AC 1 ms
5,248 KB
testcase_02 WA -
testcase_03 WA -
testcase_04 WA -
testcase_05 WA -
testcase_06 WA -
testcase_07 WA -
testcase_08 WA -
testcase_09 WA -
testcase_10 WA -
testcase_11 WA -
testcase_12 WA -
testcase_13 WA -
testcase_14 WA -
testcase_15 WA -
testcase_16 WA -
testcase_17 WA -
testcase_18 WA -
testcase_19 WA -
testcase_20 WA -
testcase_21 WA -
testcase_22 WA -
testcase_23 WA -
testcase_24 WA -
testcase_25 WA -
testcase_26 WA -
testcase_27 WA -
testcase_28 WA -
testcase_29 WA -
testcase_30 AC 80 ms
17,920 KB
testcase_31 AC 75 ms
16,896 KB
testcase_32 AC 73 ms
17,024 KB
testcase_33 AC 77 ms
18,048 KB
testcase_34 AC 62 ms
17,664 KB
testcase_35 AC 62 ms
18,048 KB
testcase_36 AC 1 ms
5,248 KB
testcase_37 AC 1 ms
5,248 KB
testcase_38 AC 1 ms
5,248 KB
testcase_39 AC 1 ms
5,248 KB
権限があれば一括ダウンロードができます

ソースコード

diff #

use std::collections::BinaryHeap;

use proconio::input;

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

    let mut score = 0_i64;
    let mut heap: BinaryHeap<Node> = cxy.iter().map(|&(c, x, y)| Node::new(c, x, y)).collect();
    let mut cnt = 0_usize;
    while let Some(node) = heap.pop() {
        score += if cnt >= node.c { node.x } else { node.y };
        cnt += 1;
    }
    println!("{}", score);
}

#[derive(Debug, Clone, Copy)]
struct Node {
    c: usize,
    x: i64,
    y: i64,
    diff: i64,
}

impl PartialEq for Node {
    fn eq(&self, other: &Self) -> bool {
        self.diff == other.diff
    }
}

impl Eq for Node {}

impl PartialOrd for Node {
    fn partial_cmp(&self, other: &Self) -> Option<std::cmp::Ordering> {
        Some(self.cmp(&other))
    }
}

impl Ord for Node {
    fn cmp(&self, other: &Self) -> std::cmp::Ordering {
        self.diff.cmp(&other.diff)
    }
}

impl Node {
    fn new(c: usize, x: i64, y: i64) -> Self {
        Self {
            c,
            x,
            y,
            diff: y - x,
        }
    }
}
0