39 lines
992 B
Text
39 lines
992 B
Text
|
import java.util.Scanner
|
||
|
|
||
|
val scanner = Scanner(System.`in`)
|
||
|
|
||
|
val rules = HashMap<Int, MutableSet<Int>>()
|
||
|
|
||
|
while (scanner.hasNextLine()) {
|
||
|
val line = scanner.nextLine()
|
||
|
if (line == "") {
|
||
|
break;
|
||
|
}
|
||
|
|
||
|
val (before, after) = line.split("|").map(String::toInt)
|
||
|
if (!rules.contains(before)) {
|
||
|
rules[before] = HashSet<Int>()
|
||
|
}
|
||
|
rules[before]!!.add(after)
|
||
|
}
|
||
|
|
||
|
var sum = 0
|
||
|
while (scanner.hasNextLine()) {
|
||
|
val line = scanner.nextLine()
|
||
|
val pages = line.split(",").map(String::toInt)
|
||
|
|
||
|
val result = pages.fold(Pair(HashSet<Int>(), true)) { (appeared, isSafe), page ->
|
||
|
val shouldBeAfter = rules[page]?.toSet() ?: emptySet()
|
||
|
val violateRule = appeared.intersect(shouldBeAfter)
|
||
|
val stillSafe = isSafe && violateRule.isEmpty()
|
||
|
|
||
|
appeared.add(page)
|
||
|
Pair(appeared, stillSafe)
|
||
|
}
|
||
|
|
||
|
if (result.second) {
|
||
|
val pagesArray = pages.toIntArray()
|
||
|
sum += pagesArray[pagesArray.size / 2]
|
||
|
}
|
||
|
}
|
||
|
println(sum)
|