Яндекс.Алгоритм 2014

Сегодня по приглашению команды Яндекс окажусь на финале чемпионата по программированию Яндекс.Алгоритм, который проходит в Берлине. До этого ни разу не слышал об этом чемпионате, потому что всегда занимался исключительно прикладным, а не спортивным программированием. Это совершенно отдельная область, знания о которой у меня ограничиваются четвертым местом на районной олимпиаде по информатике в 8 классе  Но я каждый год с удовольствием читаю отчеты ЖЖ-юзера _adept_ о его участии в конкурсе программирования на функциональных языках ICFPC: http://users.livejournal.com/_adept_/tag/icfpc 

Читается отчеты на одном дыхании, потому что Дмитрий пишет их в жанре технотриллера:

“Нас было 7 человек. У нас было 20 модулей на хаскеле, приватный репозиторий на гитхабе, 6 веток в этом репозитории, ImplicitParams, MagicHash и UndecidableInstances в коде и одна highmem нода на амазоне, а также hangouts для общения, юнит-тесты, просто тесты, google docs для заметок и куча статей про SMT-солверы. Не то что бы мы это все использовали, но на ICFPC ты ищешь в инете всякую дурь и бывает трудно остановиться. Единственное что вызывало у меня опасение – это SMT-солверы. Нет ничего более беспомощного, безответственного и испорченного, чем человек, читающий статьи в ходе контеста. Но я знал, что рано или поздно мы подсядем и на эту дрянь…”

Разница между Берлином, где проходит финал конкурса и Новосибирском – пять часов. Пока здесь все спят, я ищу задачи финала прошлого года. Оказывается, все они есть на Хабре:http://habrahabr.ru/company/yandex/blog/191030/

Тексты некоторых задач радуют: “Маленькая Анюта решила изучить битовые операции над числами. Сегодня она изучила операцию «побитовое И». Побитовое И — это бинарная операция, действие которой эквивалентно применению логического И к каждой паре битов, которые стоят на одинаковых позициях в двоичных представлениях операндов (в двоичном представлении допустимы лидирующие нули). Другими словами, если оба соответствующих бита операндов равны 1, результирующий двоичный разряд равен 1; если же хотя бы один бит из пары равен 0, результирующий двоичный разряд равен 0.

По удивительному стечению обстоятельств, как раз сегодня родители Анюты принесли с работы два набора чисел. Папа принёс с работы набор A, состоящий из P чисел, а мама — набор B, состоящий из M чисел. Все числа в наборах были целые, неотрицательные, а также не превосходящие 65535. Кроме того, числа в наборах были пронумерованы, начиная с 1.

Радостная Анюта тут же принялась применять изученную операцию к числам из этих наборов. Чтобы не обидеть никого из родителей, она применяла побитовое И к тем парам чисел, одно из которых было из папиного набора, а другое — из маминого.”

А вот так проходил финал прошлого года:
https://www.facebook.com/media/set/?set=a.630214863665305.1073741844.122612334425563&type=3&uploaded=161