И как я туда попал.

Я был одним из многих соискателей, которые хотели пройти IITJEE и получить возможность учиться в одном из «престижных учебных заведений» Индии. Моя школа была связана с CBSE, и я изучал компьютерные науки в качестве одного из моих предметов. В то время подготовки к IITJEE было более чем достаточно, чтобы занять меня, и у меня не было времени углубляться в программирование. В школе меня учили C ++, и я неплохо справлялся с моими оценками. Я узнал о соревновательном программировании и таких сайтах, как Codechef, от своих товарищей по коучингу. Это было примерно в то время, когда приближался экзамен JEE (Advanced). После JEE я попытался решить некоторые из самых простых проблем, и именно тогда я получил свою первую правильную отправку. Одно могу сказать точно - первая зеленая галочка наверняка вызовет озноб. После этого были объявлены результаты вступительных экзаменов, и я поступил в отделение CSE в IIT Roorkee.

Многие из моих друзей начали соревновательное программирование к концу первого месяца. Я вместе со своими друзьями встретил пожилых людей, и они были более чем счастливы направить нас в отношении того, как этого добиться. Мы начали участвовать в ежемесячном конкурсе Codechef Long Challenge, который действительно помог нам улучшить наши навыки. Я узнал о группе программирования и алгоритмов (PAG) во время вступительного выступления в конце августа. После этого я подумал про себя, что хочу быть частью этого. В конце сентября PAG провела онлайн-конкурсы по набору студентов первого курса (на Erdős и CodeVillage). Три лучших конкурсанта должны были получить прямой доступ к раунду собеседований. Я не входил в число лучших участников (чего я ожидал). Потом был письменный тест. Он был полностью основан на математических и логических рассуждениях. Этот тест написали более 250 студентов, и, к счастью, меня отобрали для следующих туров. Следующим раундом было индивидуальное интервью, состоящее из головоломок и еще нескольких логических вопросов. Это было долгое интервью, но совсем не напряженное. Мы безоговорочно обсуждали эту проблему со старшими. За этим последовало еще одно собеседование один на один, но на этот раз вопросы были основаны на проблемах программирования (хотя мы не должны были писать код). Затем последовало общее интервью. Выбор основывался не на том, насколько хороши у вас навыки программирования, а на том, сколько вы готовы учиться и вносить свой вклад в группу. Результаты были объявлены поздно вечером, и я очень обрадовался, увидев свое имя в списке. Для меня это было началом удивительного путешествия.

В PAG я познакомился с одними из самых блестящих пенсионеров и программистов нашей страны. Соревновательное программирование - это спорт. Но есть одно отличие. В футболе, если вы хороши, шансы сыграть против Месси или Роналду очень малы. Но здесь у вас есть возможность соревноваться с лучшими игроками со всего мира. Вы можете судить о себе и оценивать себя, рассматривая свои выступления. Я узнал о ACM-ICPC, всемирном конкурсе, который проводится ежегодно и приравнивается к чемпионату мира. Он состоит из трех раундов: сначала онлайн-раунд, затем выездной раунд, а затем престижный Мировой финал. Любители программирования мечтают попасть на Мировой финал. С 2013 года одна команда членов PAG представляла IITR на Мировом финале, за исключением 2017 года. Командная триангуляция в настоящее время является сильным претендентом на участие в Мировом финале 2018 года.

Членство в PAG развивает в вас дух, позволяющий превзойти себя в каждом конкурсе. Конкуренция с другими ловкими кодировщиками в группе побудила меня постоянно совершенствовать свои навыки. Чем больше вы проводите конкурсов, тем выше ваши навыки. Пенсионеры в PAG провели серию лекций, знакомящих нас с огромным количеством тем и техник, необходимых для успешных соревнований. Теория чисел, обработка битов, обработка строк, стандартная библиотека шаблонов и т. Д. Были одними из основных тем. Затем мы рассмотрели деревья сегментов, динамическое программирование, алгоритмы работы с графами, такие как bfs и dfs. Они попросили нас высказать свое мнение и предложить темы, которые мы хотели бы изучить. Когда вы решаете проблемы, вы можете столкнуться с трудностями при решении определенного набора проблем. Нам дали возможность попросить о лекции по этой теме. Группа facebook предоставила платформу для публикации наших сомнений. Кто-то всегда был рядом, чтобы снять вопросы. Нам очень помогли соревнования по codevillage, QOTW и т. Д. И среди всего этого мы подошли к концу нашего первого года.

Теперь в PAG раньше было правило (читай традиция): исключать всех первокурсников после завершения первого курса и снова набирать студентов на второй год. Это гарантирует, что в группе останутся только те, кто действительно хочет продолжить программирование (но сейчас это будет прекращено, поскольку старшие говорят, что это «не в интересах группы»). Как следствие, нас исключили из канала бездействия, но не раньше, чем пожилые люди предложили нам, как использовать летние каникулы.

Вернувшись на третий семестр, я был взволнован и следил за страницей Facebook, чтобы быть в курсе о найме на второй год. На этот раз теста не было, но мы попали в шорт-лист для собеседований на основе наших профилей программирования. Кроме того, на CodeVillage был проведен конкурс, который был обязательным для всех претендентов, и снова были выбраны 4 лучших. На этот раз проблемы были не логическими, а строгими проблемами программирования. После этого нас попросили дать свои предложения о том, что можно сделать для дальнейшего улучшения группы, и как мы планируем внести свой вклад в это. Результаты были объявлены на следующий день. Некоторые из студентов, выбранных на первом курсе, не смогли приехать на этот раз. Кроме того, многие новые лица были выбраны из-за их страсти к CP и того, насколько хорошо они выступали на соревнованиях. То, насколько регулярно вы проводите конкурсы, было еще одним фактором, повлиявшим на ваш выбор.

Руководство, которое я получил как член PAG, изменило мой подход к проблеме. Будучи участником второго года, вы можете внести свой вклад, а когда вы готовитесь преподавать, ваше понимание этой темы резко возрастает. Обдумывание того, как лучше всего научить других понять концепцию, значительно улучшает ее понимание. Я получил удовольствие от пребывания здесь. Но дело не в том, что мы программируем только весь день. У нас есть своя доля удовольствия, и многие люди также участвуют в других мероприятиях кампуса. Несомненно, нельзя пропустить ежегодную поездку и частые чаепития (Chapo - это жаргон IITR для лечения). Вы знакомитесь с новыми людьми, и ваша социальная сеть укрепляется. Зацикливаться на проблеме и думать, как ее решить во время лекций, обсуждать с друзьями, как решить одну и ту же проблему разными способами, пропускать ужин в беспорядке, потому что вы были заняты проведением конкурсов, а когда вы научились, создавайте новые проблемы и обсуждая их с друзьями и пожилыми людьми: это одни из лучших опытов, которые у меня, и я верю, у большинства людей в группе. В заключение я хотел бы сказать, что мое время в PAG было обогащающим и, в целом, отличной кривой обучения.

Виней Аггарвал учится на втором курсе компьютерных наук и инженерии (CSE) в IIT, Рурки. В настоящее время он является членом PAG и работает с нами с октября 2016 года. Вы можете найти его на Codeforces здесь.

Это первая история наших участников. Подпишитесь на нас, чтобы узнать больше таких историй!

Группа программирования и алгоритмов, широко известная как PAG, представляет собой студенческую группу, которая способствует развитию конкурентоспособного программирования в рамках Секции разработки программного обеспечения в IIT, Рурки. У нас есть открытый для всех сомнений форум по соревновательному программированию для всех.