Այսօր Պորտուգալիայի Պորտո քաղաքում կանցկացվի ICPC 2019 ծրագրավորման միջազգային մրցույթի եզրափակիչը, որին կմասնակցեն ITMO համալսարանի ներկայացուցիչներ և այլ թիմեր Ռուսաստանի, Չինաստանի, Հնդկաստանի, ԱՄՆ-ի և այլ երկրների համալսարաններից։ Եկեք ավելի մանրամասն պատմենք.
icpcnews /flickr/ CC BY- ի կողմից / Լուսանկարներ Պուկետում կայացած ICPC-2016 եզրափակիչ փուլից
Ինչ է ICPC-ն
ICPC ծրագրավորման միջազգային մրցույթ է ուսանողների շրջանում: Դրանք անցկացվում են ավելի քան 40 տարի՝ առաջին եզրափակիչը անցավ դեռ 1977թ. Ընտրությունն իրականացվում է մի քանի փուլով. Համալսարանները բաժանված են ըստ տարածաշրջանների (Եվրոպա, Ասիա, Աֆրիկա, Ամերիկա և այլն): Նրանցից յուրաքանչյուրն ընդունում է միջանկյալ փուլեր, մասնավորապես Հյուսիսային Եվրասիական կիսաեզրափակիչները տեղի ունեցավ մեր համալսարանում. Եզրափակիչին մասնակցում են մարզային փուլերի հաղթողները։
ICPC-ում երեք մասնակիցներից բաղկացած թիմերին առաջարկվում է լուծել մի շարք խնդիրներ՝ օգտագործելով մեկ համակարգիչ (համացանցին միացված չէ): Այսպիսով, բացի ծրագրավորման հմտություններից, ստուգվում են նաև թիմային աշխատանքի հմտությունները։
Մրցույթի ընթացքում թիմեր կստանա մեկ համակարգիչ երեք անձի համար. Այն աշխատում է Ubuntu 18.04-ով և ունի նախապես տեղադրված vi/vim, gvim, emacs, gedit, geany և kate: Կարող եք ծրագրեր գրել Python, Kotlin, Java կամ C++ լեզուներով։
Երբ թիմը լուծում է խնդիրը, այն ուղարկում է փորձարկման սերվերին, որը գնահատում է կոդը: Մասնակիցները չգիտեն, թե ինչ թեստեր է կատարում մեքենան: Եթե դրանք բոլորն էլ հաջող լինեն, թիմը ստանում է բոնուսային միավորներ: Հակառակ դեպքում, սխալ է առաջանում, և ուսանողներն ուղարկվում են կոդը ուղղելու համար:
Համաձայն ICPC-ի կանոնների՝ հաղթում է այն թիմը, որը լուծում է ամենաշատ խնդիրները: Եթե նման թիմերը մի քանիսն են, ապա հաղթողը որոշվում է նվազագույն XNUMX մետրանոցով: Յուրաքանչյուր լուծված խնդրի համար մասնակիցները ստանում են տուգանային րոպեներ: Րոպեների քանակը հավասար է մրցույթի մեկնարկից մինչև թեստային սերվերի կողմից առաջադրանքն ընդունելու ժամանակին: Եթե թիմը լուծում է գտնում, ապա այն փոխանցելու յուրաքանչյուր սխալ փորձի համար ստանում է ևս քսան րոպե տուգանք։
icpcnews /flickr/ CC BY- ի կողմից / Լուսանկարներ Պուկետում կայացած ICPC-2016 եզրափակիչ փուլից
Նմուշի խնդիրներ
Առաջնության նպատակները պահանջում են թիմային համակարգում և կենտրոնացում: Բացի այդ, նրանք ստուգում են առանձին մաթեմատիկական ալգորիթմների գիտելիքները: Ահա առաջադրանքի օրինակ, որն առաջարկվել է ICPC 2018-ի մասնակիցներին.
Տպագրության մեջ կա «գետ» տերմինը. սա բառերի միջև տարածությունների հաջորդականություն է, որը ձևավորվում է տեքստի մի քանի տողից: Որոշ գետագետ (իսկական) ցանկանում է գիրք հրատարակել։ Նա ցանկանում է, որ էջի վրա «ձևավորվեն» ամենաերկար տպագրական գետերը, երբ տպագրվում են միատառ տառատեսակով: Մասնակիցները պետք է որոշեին այն դաշտերի լայնությունը, որտեղ այս պայմանը կբավարարվեր:
Մուտքի ժամանակ ծրագիրը ստացել է n ամբողջ թիվ (2 ≤ n ≤ 2), որը որոշում է տեքստի բառերի քանակը։ Այնուհետև մուտքագրվեց տեքստը. մեկ տողի բառերը բաժանված էին մեկ բացատով և չէին կարող բաղկացած լինել ավելի քան 500 նիշից:
Ելքի ժամանակ ծրագիրը պետք է ցույց տա դաշտերի լայնությունը, որտեղ ձևավորվում է ամենաերկար «գետը», և այս գետի երկարությունը: