среда, 9 декабря 2020 г.

Сули Гули

В честь дня рождения пошли сегодня за халявным тортиком, который приносят имениннику. Поднялись на четвёртый этаж, где вход напротив кинотеатра, а там перекрыто и сказано, что надо подниматься по отдельной лестнице. В Токио-City, где мы были недавно, так же. Выяснилось, что это постановление правительства о закрытии блоков питания, не имеющих отдельного входа с улицы. На мой взгляд, это такой же идиотизм, как и всё остальное, связанное с коронавирусом. Мне по-любому пришлось зайти в торговый центр, подняться на лифте, вернуться на улицу, а потом подниматься по отдельной лестнице, задыхаясь в маске.

Тут мы ему подарили новый телефон и потом сидели, настраивали, переносили данные со старого.

15 лет стукнуло


Как молоды мы были! С этого года Мишке разрешается посещать врачей без присутствия родителей.

Код - это сила!

Чтобы проникнуться динамическим программированием, один из друзей порекомендовал сайт CodeForces. Там можно зарегистрироваться с сыном и выполнять различные задачи из архива. Ну и проверять решение тоже можно. Поддерживается куча языков, даже Kotlin! Хорошая возможность прокачать навыки ещё и в нём.

Я не удержался и сходу решил несколько самых лёгких задач, чтобы опробовать возможности системы:


Судя по всему мне придётся привыкать, что всякие проверки - от лукавого. Для олимпиадного програмирования не нужно проверять входные данные, что позволяет писать код короче:
fun main() {
    val index = readLine()!!.split(' ').map { it.toInt() }[1] - 1
    val list = readLine()!!.split(' ').map { it.toInt() }
    val min = list[index].coerceAtLeast(1)
    println(list.filter { it >= min }.count())
}
Это пример решения задачи Следующий раунд. Как можно заметить, я игнорирую нулевой результат readLine(), а из первого массива беру только второе число, так как первое понадобилось бы только для проверки длины второго массива. Не уверен, нужно ли задавать нижнее значение min как 1, но решение приняли: