Pull to refresh
57
0
Mike Mirzayanov @MikeMirzayanov

User

Send message

Финал чемпионата по программированию Russian Code Cup: как это было

Reading time6 min
Views14K
Продолжаем традицию подробных отчетов о финалах RCC (прошлогодний аналогичный пост — здесь). Итак, 23 сентября 2013 года завершился третий чемпионат по спортивному программированию — Russian Code Cup 2013. Первое место занял Петр Митричев, повторив собственное достижение 2011 года, второе — Геннадий Короткевич, победивший в этом году вместе с командой ИТМО в финале ACM ICPC в Санкт-Петербурге. Третьим стал Дмитрий Джулгаков, уже третий раз участвовавший в финале чемпионата, но впервые завоевавший призовое место.

Читать дальше →
Total votes 65: ↑53 and ↓12+41
Comments2

Новая олимпиада по новому языку: открываем регистрацию

Reading time2 min
Views12K


Компания JetBrains открывает регистрацию на Kotlin Challenge — соревнование по программированию для тех, кто хочет попробовать новый язык программирования для платформы Java.

Помните, на конференциях вы слышали доклады по Kotlin? Помните, кто-то из друзей вдохновенно рассказывал о том, что вот-вот появится новая Java от JetBrains? Помните, младшая сестра жаловалась, что никак не освоит Kotlin, потому что нет русской документации? Теперь все изменилось: мы начинаем свою собственную олимпиаду по Kotlin, и даже сделали немного документации по-русски для тех родных заядлых олимпиадников, которые еще не изучили даже технический английский.

Мы приглашаем к участию в Kotlin Challenge всех, кто любит сложные олимпиадные задачи и всех, кто пробует самое свежее в информационных технологиях, чтобы сыграть роль первопроходцев, покоряющих неизведанный край нового языка, сразиться с серьезными соперниками и выиграть почет, славу и призы.

Важно:
Читать дальше →
Total votes 37: ↑34 and ↓3+31
Comments52

Russian Code Cup 2013: разбираем задачи финала

Reading time20 min
Views28K


23 сентября 2013 года состоялся финал чемпионата по программированию Russian Code Cup 2013.

Первое место занял Петр Митричев (кстати, чемпион RCC 2011). Второй приз взял Геннадий Короткевич, третье — Дмитрий Джулгаков.

Сегодня мы публикуем подробный разбор шести задач, которые были предложены финалистам RCC (спойлер: одна из них так и осталась нерешенной). В программе — сортировка невиданной быстроты, борьба с капибарным гриппом, путешествия роботов и многое другое.

Читать дальше →
Total votes 68: ↑59 and ↓9+50
Comments5

Russian Code Cup 2013: настраиваемся на хардворкинг!

Reading time7 min
Views7.9K


23 сентября этого года лучшие программисты страны сразятся друг с другом в финальном раунде российского чемпионата по спортивному программированию, Russian Code Cup 2013 (RCC). Это будет уже третий финал организованной Mail.Ru Group олимпиады, призванной не только поддержать престиж российских программистов в мире, но и популяризировать программирование как таковое.

В преддверии третьего финала мы решили взять интервью у спикеров RCC 2013 — Дмитрия Склярова, Эдварда Йордона и Кена Голдберга. Но сначала давайте вспомним об основателях языков программирования, благодаря которым сегодняшнее программное обеспечение является именно таким, каким мы его знаем.

Читать дальше →
Total votes 47: ↑38 and ↓9+29
Comments12

Контест «Пятница, 13-ое, День Программиста»

Reading time1 min
Views8.8K
Позвольте предложить еще один способ отметить наш профессиональный праздник — поучаствовать в одноименном контесте, который состоится 13 сентября в 19:30 по московскому времени.

Этот контест — очередной из серии Surprise/Unknown Language Round-ов. В таких раундах участники решают задачи только на одном языке программирования, который недоступен в обычных раундах и неизвестен большинству спортивных программистов. Язык объявляется в начале контеста, после чего за два часа нужно его освоить и применить к задачам (относительно простым и не требующим продвинутых алгоритмов). В прошлых раундах фигурировали Tcl, Io, Pike, Befunge, COBOL, Factor и Roco. Я надеюсь, что язык этого раунда станет таким же сюрпризом, каким были все предыдущие.

Правила и обсуждение
Total votes 28: ↑20 and ↓8+12
Comments7

Образовательные проекты в ABBYY: что нового?

Reading time2 min
Views6.1K
Начало нового учебного года – хороший повод. Так подумал ваш редактор и отправился в отдел, который у нас в ABBYY занимается образовательными проектами – узнать, что интересного произошло в последнее время и что планируется на будущее.

Прежде всего, мне рассказали, что в июле прошёл очередной ABBYY Cup – олимпиада по спортивному программированию, которую мы делаем уже в третий раз. В этом году мы завоевали почти весь мир – только африканским программистам в следующем году стоит выступить более массово :)

Организаторы отмечают более высокий, по сравнению с прошлогодним, уровень конкурсантов – в ABBYY Cup-2013 участвовали звёзды спортивного программирования мировой величины.
Читать дальше →
Total votes 25: ↑20 and ↓5+15
Comments0

Разбор всех задач и результаты Яндекс.Алгоритма

Reading time17 min
Views116K
Буквально пару часов назад в Санкт-Петербурге завершился открытый чемпионат по программированию Яндекс.Алгоритм 2013. Состязания состояли из нескольких онлайн-раундов по 100 минут, за победу боролись более 3000 программистов из 84 стран. По результатам трёх отборочных раундов в финал вышли 25 лучших.

image

Финалисты должны были решить шесть алгоритмических задач за 100 минут. Первое место занял недавний победитель ACM ICPC 2013 в составе команды НИУ ИТМО Геннадий Короткевич (tourist), который набрал меньше всего штрафного времени. Второе место досталось выпускнику НИУ ИТМО Евгению Капуну (eatmore). Третье место занял представитель Тайваня Ши Бисюнь.

В подготовке заданий для чемпионата участвовали специалисты из нескольких стран: России, Беларуси, Польши и Японии. Главными составителями задач стали разработчики минского офиса Яндекса (как и все сотрудники компании, к участию в состязаниях они не допускались). Мы попросили всех авторов разобрать задания, которые они подготовили для участников Яндекс.Алгоритма. Кстати, все задачи не удалось решить никому, лучший результат — три решённые задачи — показали только три участника.
Читать дальше →
Total votes 91: ↑81 and ↓10+71
Comments30

3070 часов хак-квеста, отчёт и рассказы участников

Reading time7 min
Views20K

Участники одного из оффлайновых хакерских турниров Cyber Readiness Challenge

В пятницу закончилась онлайн-игра хак-квеста Cyber Readiness Challenge, которую проводили Symantec и КРОК.

Частенько встречаются хакквесты, которые делают люди, далекие от профессионального инфобеза. Такие квесты можно узнать по заданиям на угадайку: для прохождения требуются не столько скиллы, сколько везение и угадывание что имел в виду автор. А здесь, похоже, получилась очень редкая вещь: соревнование делали люди, шарящие в инфобезе, но при этом далекие от мира CTF. В результате таски получились с одной стороны наивными, но в то же время технически правильными. В одном соревновании сошлись задания вида «Просканируйте сетку. Сколько у нас машин в сети?» и хардкорчик вроде «Расшифруйте заксоренный блок base64, мультибайтовый xor-ключ неизвестен».
Влад «vos» Росков

Участники подключались к симулятору, моделирующему сеть крупной корпорации EDC. По сценарию в системе безопасности EDC произошло несколько инцидентов. Компания нанимает разобраться в случившемся лучших экспертов в области информационной безопасности, чтобы доказать или опровергнуть возможность взлома.

В целом на игру ушло около 3070 часов (общее время, затраченное участниками). Всего в турнире залогинилось 143 игрока из разных регионов России, из которых активно участвовало примерно две трети.
Читать дальше →
Total votes 25: ↑23 and ↓2+21
Comments7

Разбор задач финала чемпионата мира про программированию ACM ICPC 2013

Reading time25 min
Views122K
На прошедшем неделю назад чемпионате мира по командному программированию ACM ICPC 2013 было 11 задач, одну из которых за отведённое время не смогла решить правильно ни одна из команд.

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

В этом году на ACM ICPC был 21 аналитик из Швеции, Нидерландов, США, Словакии, Беларуси и России. И 10 из них были из Яндекса. Все они в разные годы были призёрами ICPC. Специально для Хабра они разобрали все задания чемпионата.

Разбор задачи «Матрёшка» во время трансляции ACM ICPC 2013
Читать дальше →
Total votes 113: ↑110 and ↓3+107
Comments14

Вконтакте iOS SDK v2

Reading time10 min
Views23K
Добрый вечер!

Всё началось с того, что необходим был более или менее удобный инструмент для работы с API социальной сети ВКонтакте под iOS. Однако Google меня достаточно быстро расстроил результатами поиска:

Вроде бы всё хорошо, самое главное есть, но вот использование не вызывает приятных ощущений.

Под катом я расскажу, как работает обновленная версия ВКонтакте iOS SDK v2, с чего всё начиналось и к чему в итоге пришли.
Читать дальше →
Total votes 33: ↑24 and ↓9+15
Comments6

Yaxy — proxy-сервер для веб-разработчика

Reading time4 min
Views35K
Yaxy — proxy-сервер, подменяющий различные части HTTP-запросов и ответов на указанные в config-файле значения. Я не буду здесь описывать, как поставить, настроить и запустить сервер, это всё описано в readme репозитория. Здесь я опишу различные случаи, в которых Yaxy очень помогает, а то и вовсе незаменим.

Под катом 9 примеров использования Yaxy
Total votes 130: ↑129 and ↓1+128
Comments41

Разработка web API

Reading time9 min
Views287K

Интро


Это краткий перевод основных тезисов из брошюры «Web API Design. Crafting Interfaces that Developers Love» Брайана Маллоя из компании Apigee Labs. Apigee занимается разработкой различных API-сервисов и консталтингом. Кстати, среди клиентов этой компании засветились такие гиганты, как Best Buy, Cisco, Dell и Ebay.

В тексте попадаются комментарии переводчика, они выделены курсивом.

Собираем API-интерфейсы, которые понравятся другим разработчикам


Понятные URL для вызовов API

Первый принцип хорошего REST-дизайна — делать вещи понятно и просто. Начинать стоит с основных URL адресов для ваших вызовов API.

Ваши адреса вызовов должны быть понятными даже без документации. Для этого возьмите себе за правило описывать любую сущность с помощью коротких и ясных базовых URL адресов, содержащих максимум 2 параметра. Вот отличный пример:
/dogs для работы со списком собак
/dogs/12345 для работы с отдельной собакой
Дальше
Total votes 235: ↑224 and ↓11+213
Comments128

Отчёт со Всероссийского Открытого Чемпионата по программированию

Reading time4 min
Views37K

Первый день: как видите, многие финалисты со своими ноутбуками

В эту пятницу закончился Всероссийский Открытый Чемпионат по программированию, где нужно сначала решать задачи, а потом «взламывать» решения других участников.

Кто и откуда приехал?


Участвовало 3500 программистов со всей России, из стран СНГ и совсем немного — из других стран. К первому туру было отобрано 2000 участников, ко второму — 400, а в финал в Москве вышло 50 человек. Уровень в этом году был явно выше чем в прошлом: либо сказались тренировки и то, что турнир набирает известность, либо то, что в игру включились гости из других стран. Приезжали участники финалов прошлых лет.

В финал попало 16 москвичей, 14 петербуржцев, по двое жителей Екатеринбурга, Нижнего Новгорода, Саратова, один участник приехал из Новосибирска. Также в финал вышли по трое из Беларуси, Польши, Украины и даже один человек из Японии. По правилам турнира мы оплачивали дорогу всем, кроме жителей Польши и Японии, а проживание оплатили каждому участнику.
Читать дальше →
Total votes 59: ↑51 and ↓8+43
Comments11

Использование разделяемой памяти в Java и off-heap кеширование

Reading time6 min
Views58K
На прошлой неделе состоялся успешный эксперимент по запуску нового решения для download-сервиса. Один достаточно скромный сервер (2 x Intel Xeon E5620, 64 GB RAM) под управлением Java-приложения собственной разработки принял на себя нагрузку восьми Tomcat'ов, обслуживая более 70 тысяч HTTP-запросов в секунду общей пропускной способностью 3000 Mb/s. Таким образом, весь трафик Одноклассников, связанный с пользовательскими смайликами, обрабатывался одним сервером.

Вполне естественно, что высокие нагрузки требовали нестандартных решений. В цикле статей о разработке высоконагруженного сервера на Java я расскажу о проблемах, с которыми нам пришлось столкнуться, и о том, как мы их преодолели. Сегодня речь пойдет о кешировании изображений вне Java Heap и об использовании Shared Memory в Java.
Читать дальше →
Total votes 65: ↑64 and ↓1+63
Comments68

Пишем плагин для IntelliJ IDEA, добавляем функциональности редактору кода

Reading time5 min
Views30K
Начиная работать в IntelliJ IDEA, обнаружил отсутствие удобной комбинации клавиш, которой пользуюсь в Eclipse — Ctrl+Alt+Up. По этой комбинации выделенный блок текста или строка, копируется вверх с перемещением курсора в начало скопированного блока.
В Idea есть действие по умолчанию на Ctrl+D, которое копирует блок вниз (Ctrl+Alt+Down в Eclipse), но невозможно добавить аналогичное действие вверх. После гугления был задан вопрос в Q&A, оставшийся без ответа. Заведён issue на jetbrains. Все эти действия не дали ответа, поэтому решено было написать небольшой плагин для Idea.
Далее
Total votes 47: ↑42 and ↓5+37
Comments11

Как мы организовали уральскую репетицию ACM ICPC WORLD FINALS

Reading time4 min
Views13K
Доброго времени суток всем хаброжителям.
В этой статье я расскажу о том, что можно получить, если заразить нескольких студентов-айтишников с Урала крутой идеей о чемпионате международного уровня.


Всё началось жарким летним днём где-то в июле 2012. На кухне местной ИТ-компании сидели несколько студентов и Леонид Волков (тот самый глава избиркома оппозиции и автор демократии 2.0, в прошлом — призер ACM ICPC WORLD FINALS 2001). Случайно речь зашла о спортивном программировании, о его проблемах в Екатеринбурге, о том, что за последние 9 лет команда из Екатеринбурга ни разу не пропускала мировой финал чемпионата (а также о том, полезно ли оно вообще для разработчиков или нет и подобных холиварах, но статья не про то).

Читать дальше →
Total votes 47: ↑40 and ↓7+33
Comments17

Захабренный договор на разработку сайта, дизайна, софта. Версия 1.1

Reading time18 min
Views244K
На сайте немало постов о том, какие условия нужно включать в договор на создание сайтов и программ (краткий список ниже), но нет договора в формате, который можно взять за основу для составления своего договора. Мы изучили условия из постов (спасибо авторам), подумали над ними, переработали и учли в предлагаемой на ваш суд форме договора. Так что договор пока можно считать частично «захабренным».


Договор авторского заказа
Total votes 158: ↑147 and ↓11+136
Comments124

Олимпиадные задачи по программированию: что за зверь?

Reading time5 min
Views62K
Недавно мы анонсировали конкурс задач по спортивному программированию. Организаторы конкурса попросили написать короткое объявление о конкурсе в блог ABBYY, но строгий редактор отказался печатать анонс без объяснения того, что же такое олимпиадная задача. Из этого родилась целая статья. Начнем, пожалуй, с примера олимпиадной задачи.
Этот же пример, чтобы по ссылке не ходить

ИТ-рестораны


ограничение по времени на тест: 4 секунды
ограничение по памяти на тест: 256 мегабайт
ввод: standard input
вывод: standard output

В городе N. очень плохо с дорогами, общепитом и IT-инфраструктурой. Всего в городе n перекрестков, некоторые пары которых соединены двусторонними дорогами. Дорожная сеть состоит из n - 1 дороги, по дорогам можно добраться с любого перекрестка на любой другой. Да, вы правы — дорожная сеть образует неориентированное дерево.

Недавно мэр города придумал способ, устраняющий проблемы с общепитом и IT-инфраструктурой, причем одновременно! Решено поставить на перекрестках города ресторанчики двух известных сетей кафе для IT-шников: «iMac D0naldz» и «Burger Bing». Так как владельцы сетей не дружат, категорически запрещается размещать рестораны двух разных сетей на соседних перекрестках. Есть и другие требования. Вот полный список:

  • в каждом перекрестке должен находится не более чем один ресторан;
  • каждый ресторан принадлежит либо «iMac D0naldz», либо «Burger Bing»;
  • каждая сеть должна построить не менее одного ресторана;
  • не существует пары перекрестков, которые соединены дорогой и на которых стоят рестораны разных сетей.

Мэр собирается брать неплохой налог с каждого ресторана, поэтому он заинтересован в том, чтобы общее число ресторанов было максимальным.

Помогите мэру проанализировать ситуацию. Найдите все такие пары (a, b), что a ресторанов может принадлежать «iMac D0naldz», b — «Burger Bing», а сумма a + b максимальна.

Входные данные

В первой строке входных данных содержится целое число n (3 ≤ n ≤ 5000) — количество перекрестков в городе. Далее в n - 1 строке перечислены все дороги, по одной дороге в строке. Каждая дорога задана парой чисел xi, yi (1 ≤ xi, yi ≤ n) — номерами соединяемых перекрестков. Считайте, что перекрестки пронумерованы от 1 до n.

Гарантируется, что заданная дорожная сеть представляет собой неориентированное дерево с n вершинами.

Выходные данные

В первую строку выведите целое число z — количество искомых пар. Далее выведите все искомые пары (a, b) в порядке увеличения первой компоненты a.
Примеры тестов
Входные данные

5
1 2
2 3
3 4
4 5

Выходные данные

3
1 3
2 2
3 1

Входные данные

10
1 2
2 3
3 4
5 6
6 7
7 4
8 9
9 10
10 4

Выходные данные

6
1 8
2 7
3 6
6 3
7 2
8 1


Первое, что бросается в глаза, это необычное условие. Такой подход сложился исторически: писать краткую математическую формулировку не принято. Обычно ее пытаются связать с реальной жизнью, ну или с не очень реальной. Например, в USACO героями всех задач являются фермер Джон и коровы. Прежде чем приступить к решению после прочтения условия, участнику требуется выделить математическую формулировку задачи.
Читать дальше →
Total votes 44: ↑34 and ↓10+24
Comments45

Russian Code Cup: как это было, как это будет

Reading time4 min
Views10K

В 2013 году Mail.Ru Group организует очередную, третью по счёту, международную олимпиаду для самых сильных программистов – Russian Code Cup 2013. Мы задумывали олимпиаду как способ популяризации программирования, поднятия престижа профессии (и, конечно, как отличный повод измерить свою скорость мысли на интеллектуальной гоночной трассе).

Читать дальше →
Total votes 51: ↑42 and ↓9+33
Comments6

Автономная кроссплатформенная монолитная программа на Java

Reading time21 min
Views62K
Я люблю desktop-приложения. Признаваться в этом нынче, похоже, стыднее, чем в связях с иностранной разведкой, но это так. Нет, это не значит, что я не люблю интернет-технологии. Более того, некоторые я не только уважаю, а даже более-менее знаю. Но, тем не менее, я скучаю по тем временам, когда программа писалась на одном компьютере, потом компилировалась и запускалась на других, разных компьютерах. Тогда везде (почти) была одна система — Windows с одной и той же API, почти не было проблем совместимости на уровне приложений, никто не материл разработчиков браузеров — все берегли нервы на разработчиков WinAPI, которые умудрялись создавать конфликты даже внутри нее одной. Но это я, конечно, иронизирую, а если серьезно — иногда и сейчас хочется написать просто desktop-приложение, да так, чтобы работало оно на всех популярных системах. Трудно? Если подумать и покопать, то не очень.

Еще я люблю языки высокого уровня с аккуратной архитектурой и строгой типизацией. Мои фавориты — Java и C#. Оба они предоставляют разработчику множество преимуществ по сравнению с C++, оба избавляют от ряда забот. Чем приходится платить? Тем, что таскаешь за собой тяжелую колоду, которая называется Oracle JVM, .NET или mono. Все три колоды весят сотни мегабайт и лицензию имеют такую, что каждый пользователь вынужден качать эту штуку сам, не путая при этом разрядность своего компьютера, а главное — программа на Java не может быть совместима со всеми версиями JVM разом, не так ли? И вот — мы приходим к тому, что просто скинуть программку другу (или миллиону друзей) и не заботиться о том, что она у него не запустится, не выходит. Приходится делать хитрые сетапы, вбивать костыли, и это я еще не упомянул .NET — однажды я видел у друга сразу 3 установленных версии, причем все три были нужны разным приложениям…

Стоп! А давайте напишем программу на Java, но так, чтобы она не требовала установки на машину какой-либо JVM, чтобы одним касанием собиралась под Windows, Linux и OS X и чтобы при этом занимала совсем чуть-чуть; так, чтобы никто даже не понял, что она написана, скажем, не на C. Невозможно? Совсем наоборот! (И нет, я имею в виду не gcj, который лишает Java всех ее прелестей. Рефлексия будет работать и даже сторонние jar вы сможете запускать).

Ну и как это сделать?
Total votes 156: ↑146 and ↓10+136
Comments80

Information

Rating
Does not participate
Location
Саратов, Саратовская обл., Россия
Registered
Activity