/* * 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>{ if num==&2 { return HashSet::from([vec![1,2], vec![2,1]]); } let permutations_:HashSet> = permutations(&(num-1)); let mut ans:HashSet> = 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 = 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(); }