The final round of CodeIT season 2021/2022 took place in-person in Sofia on 12-13th June. More details here.

Rules

Embrace the Challenge

CodeIT is divided into two competition phases – an online qualification phase and an onsite final phase. The qualification phase consists of six rounds - three "SPRINT" and three "MARATHON" rounds, which alternate for the period of one school year. There is a separate ranking for each round, which depends only on the points received by the competitors on the task given in that particular round. Every contestant with a non-zero result in each round will be awarded with rank points - the first receives 100 points, the second and third get each 15 points less than the one before, the next three - 10 points less, the next four - five points less, the next five - two points less and the five after that - one point less. In other words, the first 20 places receive: 100 points, 85, 70, 60, 50, 40, 35, 30, 25, 20, 18, 16, 14, 12, 10, 9, 8, 7, 6, 5. All other competitors with non-zero result will receive 1 point.

There are two paralel rankings. The General ranking includes all participants who have taken part in at least one round during the current season. The Junior ranking includes all participants who are 8th grade or below. Each round produces separate ranking points for the Junior ranking based on the scores in the round. The Sprint rounds include special problems which award points only to the juniors.

MARATHON:

In the MARATHON rounds there is a single task. The participants can submit their solutions throughout the round, which lasts for at least two weeks. They can also select the submission which will be saved for final testing (note that only one submission will be saved per contestant and by default this is the last submitted solution). The allowed programming languages are C, C++ and Java. The participants must upload only their source code - files with either .c, .cpp or .java extensions.

Detailed information on the scoring for a particular task will be provided in the corresponding problem statement.

SPRINT:

In the SPRINT rounds the amount of tasks is not fixed. Also there are additional tasks designed specifically for the junior competitors. The round lasts for a few hours (usually 3-4) during which the participants can submit their solutions. In contrast to the MARATHONs, here the solution saved for final testing will always be your last submission for that particular problem. The allowed programming languages are C, C++ and Java. The participants must upload only their source code - files with either .c, .cpp or .java extensions.

Each contestant will get points for a given task only when their solution passes all of the tests allotted for the task. The score for each submission is inversely proportional to the time it took to be sent, measured from the start of the round. The minimum value for a submission is 50% of the maximum number of points. The maximum number of points for each task will be specified in the problem statement.

The organizers will consider objectively all appeals within three days of the end of each round. The organizers reserve their rights to make decisions about revising points after the contest.

Participation in the final round

The final round of CodeIT season 2021/2022 will be in person. There will be awards for all contestants from "Final Ranking" and "Junior Ranking".

Testing details

  • All solutions are tested on the same computer.
  • The machine on which the solutions are tested has the following CPU: AMD Ryzen 2700x
  • Grading is done on Windows 10 64-bit

Language specifications

  • C:
    • Compiler: MinGW-gcc v8.1.0
    • Command line: gcc.exe -Wall -O2 -std=c++17 -о -Wl,--stack=<min(67108864, ML for each task)> -DONLINE_JUDGE <exe_file> <source_file>
    • Standard: c17
  • C++:
    • Compiler: MinGW-gcc v8.1.0
    • Command line: g++.exe -Wall -O2 -std=c++17 -о -Wl,--stack=<min(67108864, ML for each task)> -DONLINE_JUDGE <exe_file> <source_file>
    • Standard: c++17
  • Java:
    • Compiler: javac v1.8.0_241
    • Command line: javac -d <output_dir> <source_file> ; jar cfe <jar_file> _sol _sol.class
    • Execution command: java -Xmx<memory_limt> -jar <jar_file>
    • Remark: The name of your main class must be "_sol". Do not use static inner classes.

Evaluation of submissions

  • Testing:
    • The jury prepares a set of final tests and sets the time limit and memory limit on each task.
    • If the contestant's program causes an error during execution (Runtime Error) or exceeds the time or memory limits, it will receive 0 points for the corresponding test.
    • If the program terminates within the time limit and if the problem statement does not specify any other grading formula, the participant will be awarded either all points assigned for the test (for correct answer) or 0 points (if the result generated by the program is wrong - this includes a wrong formatted output file).
  • Feedback:
    • During each round (unless specified otherwise) the submitted solutions will be graded on the system with a set of sample test cases (which may be publicly visible) in the same conditions as the final testing. The users will get detailed information about the execution of their submitted solution. There may be a preliminary ranking based on the results received by each participant on the sample tests. The final ranking is determined by the results of the contestants' official solutions on the final tests. The testing will be done once the round has finished. The set of final test cases will be officially published.
  • Penalties:
    • The program should display only the specified output in the specified output file. Furthermore, the format of the output data must match the output described in the problem statement. It must not display anything on the screen, printer or any other output device.
    • The program should read data only from the input files described in the task statement or from the temporary files that it has created. It should not expect that the data stored in the input file will be provided on the standard input.
    • The program should not include a user interface. It should not create windows, buttons, status bars, etc. Furthermore, the program must not require user interaction - for example, pressing Enter.
    • Use of a random-number generator and other sources of randomness is allowed in solving the tasks. However, this use needs to be applied carefully - the speed of the random number generator producing values might be different on your machine versus the grader. Make sure you read the documentation.
    • Plagiarism is prohibited. Using other people's code is only possible if it is publicly available, the source is stated explicitly and it meets all license rights.
    • Failure to comply with any of the above conditions will result in reduction of the contestant's score at the jury's discretion.
  • Appeals:
    • After the results of each task are published, the participants can appeal within three days by using the contest system.
    • If necessary, the jury has the right to extend the period of appeals.
Only persons not directly involved in the organization of the competition have the right to participate. You will be able to submit solutions and ask questions related to the tasks in the ongoing round by using the online contest system, after you Register.

By entering the contest every participant accepts these rules.
Partners
https://www.president.bg/
https://www.uni-sofia.bg/
https://www.fmi.uni-sofia.bg/
https://smg.bg/
https://www.tu-sofia.bg/
https://fcst.bg/
https://npmg.org/
https://prestigio.bg/
https://www.cougar.bg/
https://www.speedy.bg
https://math.bas.bg/