https://coderun.yandex.ru/problem/cash-registers/description | Легкая |
---|
На одном из московских вокзалов билеты продают N касс. Каждая касса работает без перерыва определённый промежуток времени по фиксированному расписанию (одному и тому же каждый день). Требуется определить, на протяжении какого времени в течение суток работают все кассы одновременно.
Ввод:
3 1 0 23 0 12 0 12 0 22 0 2 0Вывод:
120
Ввод:
2 9 30 14 0 14 15 21 0Вывод:
0
Ввод:
2 14 00 18 00 10 00 14 01Вывод:
1
import java.io.BufferedReader
import java.io.BufferedWriter
import java.io.InputStreamReader
import java.io.OutputStreamWriter
fun main() {
val reader = BufferedReader(InputStreamReader(System.`in`))
val writer = BufferedWriter(OutputStreamWriter(System.out))
val n = reader.readLine().toInt() // Количество интервалов
val minutes = IntArray(1441) // Массив для разметки минут в сутках
repeat(n) {
val (h1, m1, h2, m2) = reader.readLine().split(" ").map(String::toInt) // Читаем интервалы
val start = h1 * 60 + m1 // Начало интервала в минутах
val end = h2 * 60 + m2 // Конец интервала в минутах
if (start < end) { // Если интервал находится в одном дне
minutes[start]++
minutes[end]--
} else { // Если интервал переходит через полночь
minutes[start]++
minutes[1440]-- // Завершаем день
minutes[0]++ // Начинаем новый день
minutes[end]--
}
}
var current = 0 // Текущая сумма интервалов
var allOpenMinutes = 0 // Количество минут, когда все интервалы активны
for (i in 0 until 1440) { // Проходим по всем минутам суток
current += minutes[i]
if (current == n) { // Если все n интервалов перекрывают эту минуту
allOpenMinutes++
}
}
writer.write(allOpenMinutes.toString()) // Выводим количество минут, когда все интервалы активны
writer.newLine()
writer.flush()
writer.close()
}