package yukicoder fun main() { val (n, m) = readLine()!!.split(" ").map(String::toInt) val itemScores = (0 until m).map { val (item1, item2, score) = readLine()!!.split(" ").map(String::toInt) Triple(item1, item2, score) } fun getScore(items: IntArray): Int { var score = 0 for (i in 0 until itemScores.size) { val item = itemScores[i] if (items.indexOf(item.first) < items.indexOf(item.second)) { score += item.third } } return score } fun getMaxScore(vararg items: Int): Int { return when (items.size >= n) { true -> getScore(items) false -> { var maxScore = 0 for (i in 0..n) { if (items.contains(i)) { continue } val score = getMaxScore(*items, i) if (maxScore < score) { maxScore = score } } maxScore } } } println(getMaxScore()) }