Бітва ў прамым эфіры: фінал ICPC у Порту

Сёння у партугальскім горадзе Порту пройдзе фінал міжнародных спаборніцтваў па праграмаванні ICPC 2019. У ім прымуць удзел прадстаўнікі Універсітэта ІЦМА і іншыя каманды з ВНУ Расіі, Кітая, Індыі, ЗША і іншых краін. Раскажам падрабязней.

Бітва ў прамым эфіры: фінал ICPC у Порту
icpcnews /Flickr/ CC BY / Фота з фіналу ICPC-2016 у Пхукет

Што такое ICPC

ICPC - гэта міжнародныя спаборніцтвы па праграмаванні сярод студэнтаў. Яны праводзяцца больш за 40 гадоў - першы фінал прайшоў у далёкім 1977 годзе. Адбор праводзіцца ў некалькі этапаў. ВНУ разбіваюць па рэгіёнах (Еўропа, Азія, Афрыка, Амерыка і інш). У кожным з іх ладзяць прамежкавыя этапы, у прыватнасці, паўфінал Паўночнай Еўразіі. праходзіў у нашым універсітэце. Пераможцы рэгіянальных этапаў бяруць удзел у фінале.

На ICPC камандам з трох удзельнікаў з дапамогай аднаго кампутара (не падлучанага да інтэрнэту) прапануецца вырашыць шэраг задач. Такім чынам, апроч навыкаў праграмавання правяраюцца і навыкі каманднай працы.

Каманды Універсітэта ІЦМА заваёўвалі галоўны прыз ICPC сем разоў. Гэта абсалютны рэкорд, які трымаецца ўжо доўгія гады. У бітве за кубак ICPC 2019 счапяцца 135 калектываў з усёй планеты. Універсітэт ІЦМА ў гэтым годзе прадстаўляюць Ілля Падчасавых, Станіслаў Навумаў и Раман Карабкоў.

Як будзе праходзіць фінал

На час спаборніцтва каманды атрымаюць адзін кампутар на траіх. Ён працуе пад кіраваннем Ubuntu 18.04 і мае прадусталяваныя рэдактары vi/vim, gvim, emacs, gedit, geany і kate. Пісаць праграмы можна на Python, Kotlin, Java ці C++.

Калі каманда вырашае задачу, яна перасылае яе які тэстуе серверу, які ацэньвае код. Удзельнікі не ведаюць, якія менавіта выпрабаванні праводзіць машына. Калі ўсе яны праходзяць паспяхова, каманда атрымлівае прызавыя ачкі. У адваротным выпадку генеруецца памылка, і студэнты адпраўляюцца карэктаваць код.

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

Бітва ў прамым эфіры: фінал ICPC у Порту
icpcnews /Flickr/ CC BY / Фота з фіналу ICPC-2016 у Пхукет

Прыклады задач

Задачы чэмпіянату патрабуюць ад каманд зладжанасці дзеянняў і канцэнтрацыі. Дадаткова яны правяраюць веды асобных матэматычных алгарытмаў. Вось прыклад задання, якое прапаноўвалася ўдзельнікам ICPC 2018:

У друкарні існуе тэрмін "рака" - гэта паслядоўнасць прабелаў паміж словамі, якая ўтвараецца з некалькіх радкоў тэксту. Нейкі эксперт па рэках (сапраўдным) жадае выпусціць кнігу. Ён жадае, каб пры друку монашырынным шрыфтам на старонцы «ўтвараліся» самыя доўгія друкарскія рэкі. Удзельнікам трэба было вызначыць шырыню палёў, пры якім гэта ўмова будзе выконвацца.

На ўваходзе праграма атрымлівала цэлы лік n (2 ≤ n ≤ 2 500), які вызначае колькасць слоў у тэксце. Далей, уводзіўся тэкст: словы на адным радку падзяляліся адным прабелам і не маглі складацца больш за з 80 знакаў.

На выхадзе праграма павінна была паказаць шырыню палёў, пры якой утвараецца самая доўгая "рака", і даўжыню гэтай ракі.

Поўны спіс задні з мінулага года, а таксама рашэнні да іх з тлумачэннямі можна знайсці на сайце ICPC. Там жа ляжыць архіў з тэстамі, якім "падвяргаліся" праграмы ўдзельнікаў.

Такім чынам, сёння днём на сайце чэмпіянату і на Канал YouTube будзе працаваць прамая трансляцыя з месца падзей. Цяпер ужо даступныя запісы з pre-show.

Што яшчэ ў нас ёсць у блогу на Хабры:

Крыніца: habr.com

Дадаць каментар