Натпревари во програмирање
Правила и спороведување
Натпреварите по Информатика целосно ќе бидат спроведувани преку веб-системот за натпревари mendo.mk, преку поставување на задачите за натпреварите, испраќање на решенијата, објавување на резултати и целосната комуникација.
При првата посета на сајтот, потребно е најпрво да се регистрирате. Регистрацијата е неопходна за да се учествува на натпревар.
Основни информации
Учеството на регионалниот натпревар го пријавува училиштето за секој ученик. Секое училиште има утврдена квота за учество – број на учесници n (= a + b). Бројот a се утврдува од комисијата за натпревари во зависност од техничките можности за актуелната година и може да изнесува помеѓу 1 и 5. Бројот b се утврдува индивидуално за секое училиште – тоа е бројот на освоени места на државниот натпревар во претходниот циклус на натпревари. Секое училиште е должно да спроведе транспарентна процедура за избор на соодветниот број натпреварувачи.
Учеството на државниот натпревар зависи од ранг листите на регионалниот натпревар.
Основни технички правила за натпреварување 2022
Циклусот натпревари се спроведува според следните правила:
Работата е исклучиво индивидуална и непочитување на истото ќе биде санкционирано. Пристап до интернет (oсвен до mendo.mk) е ЗАБРАНЕТ.
Читањето на влезните податоци и запишувањето на резултатите се изведува преку стандарден влез/излез.
При испраќање на решение, системот веднаш го преведува извршниот код и ја тестира програмата на тест примерот (тест групата) даден/а во текстот на задачата. Целта на ова е да се избегнат грешките при преведување, читање, запишување, итн.
На секој натпревар, учесниците ќе добијат множество од задачи со различна тежина кои треба да ги решат за времетраење на натпреварот, јасно рангирани, со евентуална напомена кои од задачите соодветствуваат на нивната возраст.
За време на одржувањето на натпреварите, ќе имате можност да ги прочитате задачите, како и да ги испратите вашите решенија. Решенијата можете да ги испратите повеќе пати во текот на траењето на натпреварот, а ќе се прегледува само последното испратено решение.
За некои од поставените задачи, можно е да има овозможен детален повратен одговор (на натпреварувачот ќе му биде овозможено тестирање на решението на дел од официјалните тест групи веднаш по испраќањето на решението).
Програмскиот јазик се одбира автоматски, освен во случај на експлицитна промена од страна на натпреварувачот.
Во рамки на веб-системот за натпревари постои дел за прегледување и поставување на прашања, каде можете да поставите прашање или да ги прочитате одговорите на некои значајни претходно поставени прашања. Специфики околу начинот и времето на поставување на прашања се објавуваат пред почетокот на секој натпревар.
Задачи
Типови на задачи кои се поставуваат
Сите задачи кои ќе се појават на натпреварите се дизајнирани да бидат алгоритамски во природа. Ефикасноста игра важна улога во дел од задачите. Доколку ефикасноста е важна во некој алгоритам, тест случаите ќе бидат дизајнирани за да ги одделат решенијата со различно ниво на ефикасност; најмалиот тест случај ќе биде направен така што кое било разумно решение на задачата ќе успее да произведе резултат во дадените временски и мемориски рамки.
Задачите кои ќе се појават на натпреварите, ќе спаѓаат во една од следниве категории:
Batch задачи: Решението се состои од една изворна датотека за компјутерска програма која чита податоци од стандарден влез (тастатура), и ги запишува решенијата на стандарден излез (екран).
Реактивни задачи: Решението се состои од една изворна датотека за компјутерска програма која комуницира со “противничка” програма преку стандарден влез (тастатура) и стандарден излез (екран).
- Излез задачи: Решението се состои од една или повеќе текстуални датотеки, во кои се запишани одговорите за однапред дадените тест примери.
Поставување и прегледување на задачите
За секоја задача, ќе биде специфициран и временски и мемориски лимит. По правило, вашите програми треба да произведат решение во рок од 1 секунда (временски лимит), и да не користат повеќе од 64MB меморија (мемориски лимит), освен ако не е поинаку нагласено во условите на задачата.
Прегледувањето на задачите е автоматизирано. Се врши евалуација на вашето решение на неколку веќе дефинирани влезни примери. По завршување на извршувањето на вашето програмско решение во предвидениот временски рок, излезот од истото ќе биде спореден со точниот излез и ќе бидат доделени соодветен број на поени за секој точен излез. Делумните решенија или решенијата кои не се согласно форматот наведен во задачата не носат половични поени. Се признаваат само оние излези кои во целост се поклопуваат со бараното решение. На крајот од натпреварот ќе биде направен обид да се достават точните решенија на задачата во некој од програмските јазици кои се користат на натпреварот, како и влезните и излезните податоци со кои биле тестирани решенијата.
Детален повратен одговор при испраќање решение
За дел од задачите ќе биде овозможен детален повратен одговор. За секоја задача со овозможен детален повратен одговор, секое прифатено испратено решение ќе биде тестирано на дел од официјалните тест случаи.
По завршување на тестирањето, резултатите од секој тест случај ќе му бидат презентирани на натпреварувачот. Имајте предвид дека програмите можат да останат во редот за тестирање подолго време.
Тест случај, тест група и резултат
Тест случај претставува едно извршување на компјутерска програма. За секој тест случај, ќе бидат спроведени соодветни временски и мемориски ограничувања. Доколку програмата прекрши некои од овие ограничувања, тест случајот се смета за неточен. Доколку програмата произведе погрешен излез (или не произведе излез), тест случајот се смета за неточен. Тест случаите ќе бидат групирани во тест групи. По завршувањето, програмите мораат експлицитно да излезат со код 0. Други излезни кодови (различни од 0) ќе предизвикаат оценување на тест случајот од страна на системот како неточен.
Тест група претставува множество од еден или повеќе тест случаи. Резултатот за секоја тест група претставува 0 поени (доколку некој тест случај од групата бил неточен). Ако сите тест случаи произвеле точен резултат се добиваат поените назначени за таа група. Различни тест групи можат да носат различен број на поени.
Финалниот резултат за секоја задача ќе биде збирот на освоените поени од секоја тест група. Само решенијата кои се испратени и прифатени од страна на електронскиот систем ќе бидат оценувани.
Прецизни технички спецификации
Прецизните технички спецификации може да бидат ажурирани на годишно ниво, до почетокот на тековниот циклус натпревари, заради напредокот на информатичката технологија.
Програмски Алатки
Решавањето на зададените проблеми треба да се изведува во следната програмска алатка која е стандардна за меѓународните натпревари по информатика:
– Code::Blocks (13.12 или повисоко)
Oваа алатка може да се користи на сите популарни оперативни системи – Windows, Linux, Mac OS X, а може да се најде на http://www.codeblocks.org.
Подготовка (тренинг) за натпреварите
Веб-системот за натпревари може да се користи и како тренинг систем. По регистрацијата, на корисниците им е овозможено решавање на задачи кои се појавувале на поранешни натпревари по информатика (државни или меѓународни), како и други задачи кои служат како подготовка за овогодинешните натпревари.
Корисниците, по најавата на системот преку страната http://mendo.mk, соодветно ја следат врската “Тренинг”, по што им се појавува листа на задачи групирани во неколку категории. Корисникот одбира задача од листата, по што му се појавува текстот на задачата и дел за испраќање на решение. По испраќањето на решение за соодветната задача, решението се додава во редот за тестирање. По завршување на тестирањето, на корисникот му се презентираат резултатите од извршувањето на програмата.
Решенија
Решенијата се една верзија програмски код (.CPP). Испратеното решение треба да биде датотека со програмски код (не извршна верзија) во соодветен програмски јазик.
Преведувањето на испратените решенија се врши со следната наредба:
C++
g++ -O2 -std=c++11 -s -static -lm -Wl,–stack={memlimit} -x c++ -o a.exe {filename.cpp}
Влезните и излезните операции се едноставни што ви дозволува да се сконцентрирате на програмирање на самиот алгоритам. Не се потребни и не се користат никакви посебни програмерски техники што се однесуваат на графички излез и употреба на глувче, тастатура и слично. Посебно, следните техники нема да влијаат во оценувањето и треба да се избегнуваат: графички излез, користење на глувче во вашите програми, напредни операции со датотеки, напредни техники на нумеричко процесирање, повици на DOS функции и сл.
Потребно е добро да ja познавате програмската средина во која се работи, поврзувањето со библиотеки и unit-и, преведување и дебагирање. За побрзо извршување на програмите придонесува и подоброто познавање на преведувачите кои се користат и нивно подобро искористување.
Влезни податоци
Целиот влез на програмите ќе се изведува преку стандарден влез (тастатура). Влезните податоци се состојат од секвенци на податоци. Секој податок може да биде цел број или непразна низа на знаци (букви, декадни цифри, итн). Податоците меѓусебно се разделени или со едно празно место или со знак за крај на линија (новите податоци во нова линија).
Излезни податоци
Програмите треба својот излез да го запишуваат на стандарден излез (екран). Секоја линија мора да завршува со знак за нова линија, дури и последната. Излезот на програмата претставуваат низи од податоци. Секој податок може да биде цел број или непразна низа на знаци (букви, цифри, итн). Податоците меѓусебно се разделени или со едно празно место или со знак за крај на линија (новите податоци во нова линија).
Пример на програма во С++ која користи стандарден влез/излез
Со оваа програма се илустрира читање на два броја од тастатура (стандарден влез) и испишување на нивниот збир на екран (стандарден излез).
#include <iostream>
using namespace std;
int main()
{
int a, b;
cin >> a >> b;
cout << a+b << endl;
return 0;
}
Приговори
По објавувањето на прелиминарните резултати од одреден натпревар, натпреварувачите преку нивните ментори можат да поднесат приговор на резултатите. Приговорите се разгледуваат од страна на комисијата за натпревари, која во своето одлучување по одреден приговор, пред се’, се води од правилата за приговори (жалби) на Интернационалната Олимпијада по информатика (IOI Rules – Appeal Process). Сите учесници кои ќе имаат направено грешка во однос на правилата објавени на почетната страна на системот и на веб-сајтот на ЗИМ, нема да може да приговараат за реевалуација на задачите и слично. Накратко, приговорите не смее да се однесуваат на какви било поправки во предадениот код на натпреварувачот, со кои евентуално би работела програмата.
Имате некое прашање?
Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua.