結果
| 問題 | 
                            No.90 品物の並び替え
                             | 
                    
| コンテスト | |
| ユーザー | 
                             | 
                    
| 提出日時 | 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 | 
ソースコード
/* 
 *     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();
}