結果

問題 No.90 品物の並び替え
ユーザー srtry
提出日時 2025-05-30 23:58:40
言語 Rust
(1.83.0 + proconio)
結果
AC  
実行時間 1,639 ms / 5,000 ms
コード長 1,375 bytes
コンパイル時間 12,005 ms
コンパイル使用メモリ 400,548 KB
実行使用メモリ 72,452 KB
最終ジャッジ日時 2025-05-31 00:00:00
合計ジャッジ時間 15,228 ms
ジャッジサーバーID
(参考情報)
judge2 / judge1
このコードへのチャレンジ
(要ログイン)
ファイルパターン 結果
sample AC * 1
other AC * 9
権限があれば一括ダウンロードができます

ソースコード

diff #

/* 
 *     Author:  srtry
 *     Created: 2025-05-25T16:29:24+09:00
 *     Coding:  utf-8-unix
 */

use proconio::input;
use std::io::{stdout,Write,BufWriter};
use std::collections::{HashMap, HashSet};

fn permutations(num:&usize) -> HashSet<Vec<usize>>{
    if num==&2 {
        return HashSet::from([vec![1,2], vec![2,1]]);
    }

    let permutations_:HashSet<Vec<usize>> = permutations(&(num-1));
    let mut ans:HashSet<Vec<usize>> = HashSet::new();
    for permutation in permutations_.iter() {
        for i in 0..=permutation.len() {
            let mut tmp = permutation.clone();
            tmp.insert(i,*num);
            ans.insert(tmp);
        }
    }
    return ans;
}

fn main() {
    input!{
        n:usize, m:usize,
        score_sheet:[[usize;3];m]
    }
    let out = stdout();
    let mut out = BufWriter::new(out.lock());
    
    let mut max_pt = 0;
    let patterns = permutations(&n);
    for pattern in patterns.iter() {
        let mut map:HashMap<usize,usize> = HashMap::new();
        for i in 0..pattern.len() {
            map.insert(pattern[i]-1,i);
        }

        let mut pattern_pt = 0;
        for rule in score_sheet.iter() {
            if map.get(&rule[0]) < map.get(&rule[1]) {
                pattern_pt += rule[2];
            }
        }
        max_pt = max_pt.max(pattern_pt);
    }

    write!(out, "{}", max_pt).unwrap();
}
0