Schedule of 25th NOI 2022
9 February Registration deadline for NOI before 2359
19 February NOI Online Qualification Contest 0900 to 1200
19 March NOI Final Contest 1030 to 1800
Online Preliminary Contest Updated 18-Jan-2022

There will NOT be an Online Preliminary Contest for NOI this year.

Online Qualification Contest Updated 18-Jan-2022
Date: 19 February 2022
Contest: 3 tasks in 3 hours
Languages supported: C++, Java*, Python 3* *See Programming Languages
Contest URL: [Will be emailed to contestants]
0900 Start of NOI Online Qualification Contest
1200 End of NOI Online Qualification Contest

Due to the restrictions enforced by COVID-19, the Qualification Contest will be conducted online.

All schools may register any number of participants. Each student should be registered under one category, Secondary or Junior College.

All participating schools are expected to proctor their own students and ensure that no cheating takes place. Please reference the Rules and Regulations.

Only the top 5 students from each school, at each level, will be considered for medals and awards, and for consideration for the Final Contest. We refer to these students as the ranked group. All students outside of the ranked group will be awarded participation certificates (unless their score for the Qualification Contest is 0).

The top 40 students from the ranked group will be invited to participate in the Final Contest to determine their final ranking. The remainder of the ranked group will be awarded based on their Qualification Contest ranking within the ranked group.

The students invited to the Final Contest will remain in the top 40 places of the overall standing, with their final ranks determined by the Final Contest.

To register for the contest, a school representative should sign up on this website and enrol all participants.

The deadline for doing so is 9 February 2022.

Final Contest Updated 18-Jan-2022

The details listed below might change due to the developing COVID-19 situation. Do check the homepage regularly for updates.

Date: 19 March 2022
Time: 1030 to 1800
Contest: 3 to 5 tasks in 5 hours
Languages supported: C++, Java* and Python 3* *See Programming Languages
(To be confirmed closer to the competition date)
1030 Reporting time (directly to assigned programming labs) Programming Labs (COM1)
1030 Registration Programming Labs (COM1)
1030 Briefing Session Programming Labs (COM1)
1100 Practice Session Programming Labs (COM1)
1200 Lunch (bento box) Around Programming Labs (COM1)
1300 NOI 2022 Contest Begins Programming Labs (COM1)
1800 NOI 2022 Contest Ends Programming Labs (COM1)
Attendance of the briefing session is compulsory. Without prior approval from the committee, participants who do not appear by 1030hrs will not be allowed to participate in the competition, even if the student shows up before 1300hrs.

To comply with the recommendations from the Ministry of Education regarding COVID-19, NOI will be implementing the following measures:

  • Registrations will be decentralised. Participants will be informed of their assigned Computing Labs before the competition, and they will report directly there. Once there, participants will be assigned a seat.
  • Students that are not well will not be allowed to participate in the competition.
  • Briefing sessions will be decentralized and conducted in the Computer Labs. This will be done via a projection of a Zoom Meeting.
  • Meals will be provided in individual bento boxes instead of a buffet. To minimize contact, only lunch will be served. Students are to make their own arrangements for breakfast and dinner.
  • Closing and prize giving ceremony will be cancelled. The NOI Organising Committee will work out alternative arrangements for distributing certificates, prizes, and medals.
  • Briefing session is now shifted to the main contest day to minimize unnecessary traveling.
Eligibility for NOI Contest
  • Eligibility of participants
    1. NOI is open to all current junior college and secondary school students, regardless of their nationality or citizenship, subject to further conditions below.
    2. The top overall winners of past NOIs (four in each year) and past IOI participants are not permitted to participate in NOI officially. The top contestants of NOI at year N will be invited to the training team of IOI'N. Top overall winners of past NOIs and past IOI participants will be invited to participate in NOI unofficially, provided that they are eligible to represent Singapore in the IOI.
  • Types of award and the criteria
    1. Apart from the gold, silver and bronze medals, there are fixed awards, comprising six individual awards (prizes and plaques) and four school awards (plaques only):
      • Four top contestants (overall)
      • Two top secondary school contestants
      • Two top junior colleges
      • Two top secondary schools
    2. The two top secondary school contestant awards are given to secondary school contestants with the highest scores who are not among the four top contestants.
    3. Individual awards are given based on the total scores of individual contestants. In the event of a tie, the difficulty ranking of the tasks will be used to break the tie.
    4. To qualify for the school awards, a school must field at least three students. The criteria for selecting the top schools are:
      • The average score of the top three contestants from the same school
      • In the event of a tie, the medal tally will be used to break the tie
      • In the event that the tie persists, the relative positions of the medallists will be used to break the tie
  • The decisions of the NOI committee shall be final.
  • Prizes

    Prizes would be given out to the top four overall (local) winners of the NOI competition

    Additional special prizes will also be given to the Youngest Medallist, Best Female Medallist and the two Top Secondary School Contestants.

    On top of those attractive prizes, gold, silver, and bronze medals will also be given out.

    The top overall winners will be selected to undergo further training and final selection to represent Singapore at IOI. (Only Singapore citizens and permanent residents are eligible for IOI, but NOI does not impose such restrictions).

    Please note that the date of IOI changes each year as it is fixed by the host country for that year. This year, IOI 2022 will be held in Indonesia, from 7 to 14 August 2022.

    Rules & Regulations

    Competition Schedule

    NOI comprises of one 3-hour contest sessions for the Qualification Contest, and one 5-hour contest session for the Final Contest. During either contest, contestants will be given 3 to 5 tasks to be solved under time constraints. The Qualification Contest will be conducted online, whereas the Final Contest will be conducted at the School of Computing.

    Practice Session

    There will be a one-hour Practice Session prior to the actual contest, to familiarise all contestants with the grading system and contest environment.

    Attire and Reporting

    Contestants are expected be in school uniform for the entire duration of the competition. This includes the registration phase, practice sessions, contest, external visits, briefing and closing ceremony.

    Any contestant who reports 2 hours after the start of the contest is deemed to be absent and will not be allowed to participate. They will also not receive the Certificate of Participation.

    Tasks

    All of the tasks at NOI are programming tasks and are designed to be of an algorithmic nature. The focus is on designing correct and efficient algorithms. Contestants would be expected to design a source code program to solve the provided task during the competition.

    The NOI takes direction from the International Olympiad in Informatics (IOI). In particular, the scope of NOI tasks will be in line with the latest updated IOI Syllabus (for IOI 2020).

    The source program provided by the contestant must be contained in one source file as specified in the task statement.

    As Java Virtual Machine uses multiple threads internally, using multiple threads is allowed in all programming languages. Note, that the running time of the submission will be counted as a sum of running times of all threads. E.g., if there were two threads running for 5 seconds each (thus, the program finishes in 5 seconds), then the running time of the submission will be 10 seconds.

    Each task will be divided into several subtasks, each worth a portion of the total points. Each task would have equal weightage in the contest.

    Time and memory limits will be specified for every task. In general, time and memory limits will be generous (for example, double those required by the expected solution). The memory limit is on the overall memory usage including executable code size, stack, heap, etc.

    However, the Scientific Committee would only guarantee that there exists a solution that fulfils the time and memory limits only in the C++ language. Contestants using either Java or Python are advised to exercise discretion.

    Each task can be one of the following types (non-exhaustive):

    1. Batch
    2. Interactive
    3. Communication

    For Batch tasks, contestants are expected to read and write from standard input and output in the format specified in the task descriptions. At least one sample input and output would be provided in the task description. No template files would be provided.

    You may assume that the input data agrees with the format specified in the task description. In particular, NOI will use UNIX-style end-of-line and end-of-file characters.

    Your output should be formatted exactly as shown in the task description. Do NOT add output of your own (such as debugging output), as this may disrupt the judging process.

    For all other task types, contestants will be provided a folder which will contain interface files, a sample grading program, and a skeleton implementation of the required source file, which exercises the interface but does not correctly solve the problem. The sample grader provided on the workstation would not be the same as the official grader used by the grading system. Contestants are recommended to modify the provided skeleton implementation and follow instructions on how to compile and test the program locally.

    Sample input and output might be provided. However, they may not be explanation with regards to their structure in the task description. Contestants are not to assume that the input and output data on the grading system is similar to the ones provided for testing.

    Due to technical limitations, the interface files are provided only in the C++ and Java language. Contestants will not be able to solve such tasks using Python.

    Task Statements

    Each contestant will receive the printed official English version of tasks in an envelope. This should be already at your workstation before the start of the contest.

    In addition, each contestant will have online access to the official English version of tasks in electronic format (PDF).

    Supplies

    In the competition room, blank paper and writing tools will be provided. However, contestants may decide to bring the following materials:

    • additional clothing (such as jackets),
    • writing utensils,
    • small mascots,
    • written or printed reference materials and books (NOI is an open book competition)
    • printed programs
    • English dictionaries
    • medical supplies and equipment

    If a contestant wants to bring any other materials, permission must be sought from the technical staff during the practice session. Any of these will be checked and, if cleared, be allowed to be brought in on the actual competition day.

    In addition, no sharing of materials are allowed. For instance, students are not allowed to share the same reference book during the competition.

    Any attempt to bring any other item into the competition room will be considered cheating. In particular, during competition rounds it is strictly prohibited to bring:

    • any computing equipment (e.g., keyboards, mice, calculators, laptops, tablets),
    • any data storage medium (e.g., CD-ROMs, USB drives, flash cards, micro-drives),
    • any communication devices (e.g., mobile phones, radios of any sort),
    • smart watches of any type
    • snacks.

    For the case of snacks, exceptions could be made for students with special dietary requirements.

    During the actual competition, light snacks and drinks will be provided outside the programming labs, at a centralized venue. An announcement will be made once these are available. Contestants must consume the snacks and drinks at the provided venues and are not allowed to bring food back to their workstation. In addition, contestants are reminded not to communicate with one another while consuming the snacks and drinks.

    Starting the Competition

    All contestants must wear their ID badges and school uniform during the competition. Each contestant will have a pre-assigned workstation. Contestants should be in their seats by at least 5 minutes prior to the start of the competition. Contestants must find their assigned computer, sit down, and wait for the competition to begin without touching anything (such as keyboards, mice, pen or paper), unless otherwise instructed.

    Clarification Requests

    During the competition, contestants may submit questions concerning any ambiguities or items needing clarification in the competition tasks. Questions and comments must be submitted online from the contest system. The Scientific Committee will respond to every question submitted by the contestants during the first half of the competition. Since replies might take some time, contestants should continue working while waiting for the answer to their questions.

    Contestants should phrase their questions so that a yes/no answer will be meaningful. Questions will be answered with one of the following:

    • “YES”
    • “NO”
    • “ANSWERED IN TASK DESCRIPTION (EXPLICITLY OR IMPLICITLY)” — The task description contains sufficient information. The contestant should read it again carefully.
    • “INVALID QUESTION” — The question is most likely not phrased so that a yes/no answer would be meaningful. The contestant is encouraged to rephrase the question.
    • “NO COMMENT” — The contestant is asking for information that the Scientific Committee cannot give.

    Grading System

    Each competitor has her or his own workstation. There is no restriction on the number of times a program may be edited, compiled, and run on the workstation. The workstations have network access to the grading system, as well as facilities such solution submission.

    Grading and evaluation take place on the grading system, which provides a similar execution environment to that of the contestant workstation. Grading workstation will have the same hardware and software configuration as contestant’s workstations (except for programs required for monitoring and grading system).

    Submitting

    Contestants must submit their solutions for tasks by using the grading system. To avoid overloading the grading system, there are two restrictions on the number of submissions:

    1. Contestants may submit a solution to each task at most once in a certain time interval.
    2. Contestants may submit at most a certain number of solutions for each task.

    Contestants would be informed of the actual values of these limitations during the briefing session. Typically, contestants would be allowed to submit to each task at most one per minute and at most 30 submissions per task.

    Each submitted source program must be written in C++, Java or Python and it must be smaller than 256 KB, the evaluation server must be able to compile it in less than 10 seconds and at most 256 MB of memory.

    Feedback

    Contestants can use the grading system to view the status of their submissions and get a short report on the compilation errors of their source code.

    Full feedback will be available for every submission, indicating whether each subtask has been solved.

    The score for each task will be the sum of the scores for all its subtasks. The score for each subtask will be the maximum score for that subtask across all submissions for the task. (For example, consider a contestant who made two submissions on a task that contains two subtasks. First submitted solution got 30 points for the first subtask and 10 points for the second subtask, second solution got 0 points for the first subtask and 50 points for the second subtask, then the final score for this task will be 80, the sum of the maximum score of each subtask.)

    If a subtask is not solved, then the grading system will give the feedback for the first input scenario, which was not solved correctly. The feedback will contain the input scenario number and one of the following reasons:

    • Wrong Answer
    • Run-time error (or out of memory)
    • Time limit exceeded
    • Security violation

    Inputs are ordered the same way in all the runs. No information on the actual data, the output produced by the contestant solution or any other execution details will be given to the contestant.

    It should be noted that the score reported in the full feedback is only provisional. There are two ways how this score may change after it has been reported to the contestant:

    1. Due to a successful appeal after the contest.
    2. In some cases, the contestants’ submissions may be re-evaluated. This re-evaluation may sometimes lead to a different total score. (E.g., if a solution behaves nondeterministically or runs very close to the time or memory limit.) In such cases, the final score for the submission is the score for its latest re-evaluation. This change in scoring cannot be appealed. Note that the final score for each subtask is still the maximum score over all submissions.

    Feedback would be provided on a best effort basis. Although the Technical Committee will strive to ensure the timeliness of the feedback provided, unforeseen circumstances might occur. Lack of submission feedback do not constitute grounds for appeal. However, the Scientific Committee and Technical Committee might provide other forms of assistance if such circumstances occur.

    Printing

    NOI does not guarantee to provide printing services. You are encouraged to print any required materials and bring it to the contest before it commences.

    Backups

    Copy of files submitted to the online submission system are saved. You can retrieve old copies of your code from the submission system. This serves as a backup of your code. You are advised to maintain backups regularly, so that you can recover in the unlikely event of a machine failure.

    Assistance

    Contestants may ask the support staff for assistance at any time. The staff members will not answer questions about the competition tasks, but will help locate toilets and refreshments, and assist with computer and network problems. The only manner in which contestants are allowed to access the network is via the grading system: even running a single "ping" command is strictly prohibited and may lead to disqualification.

    Contestants should never attempt to fix or debug or even check computer or network problems themselves; instead, they should ask for assistance.

    Ending the Competition

    Three warnings will be given at 15 minutes, 5 minutes, and 1 minute before the end of the competition. Each warning will be announced verbally by NOI support staffs. The end of the competition will be announced verbally as well. At the announcement ending the competition, contestants must immediately stop working and wait at their desks without touching the computers or anything on their desks. An additional announcement will be made instructing them to leave their tables and exit the competition room.

    At the end of the competition, contestants should remove all personal items including their mascots and dictionaries; nothing should be left behind.

    Cheating

    Contestants must use only the workstation and account assigned to them for the contest. In particular:

    • contestants must not attempt to submit illegal programs as discussed above, nor try to tamper with or compromise the grading system;
    • contestants must not attempt to gain access to root or any account other than the one assigned to them;
    • contestants must not attempt to store information in any part of the file system other than the home directory for their account or the /tmp directory;
    • contestants must not touch any workstation other than the one assigned to them;
    • contestants must not attempt to access any machine on the network or the Internet, other than to submit tasks and view submission results through the grading system;
    • contestants must not attempt to reboot or alter the boot sequence of any workstation;
    • contestants must not communicate with other people during the competition, other than NOI support staff and/or Scientific Committee members;
    • contestants must not reverse engineer the test data and solve the problems in highly test-data-dependent manners. One example of such behaviour is using the feedback system to extract the test data and then applying this knowledge to build solutions adapted to the specific test cases in the grading system. This behaviour would be considered cheating only if a contestant submitted a solution that would solve significantly fewer test cases correctly if the test data were replaced by an equivalent set of test cases (e.g., one generated with a different random seed).

    All of the above actions are considered cheating and may result in disqualification.

    Appeal Process

    Submitted solutions are evaluated using data which conform to the specification given in the problem statement, but which are hidden from competitors during the competition.

    Provisional grades, based on these tests, are available immediately to competitors. In the event of an error with the test data, the Scientific Committee will attempt to, but is not obligated to follow the following process:

    • Every attempt will be made to fix test data and regrade all solutions as quickly as possible during the execution of the contest.
    • Additional test data may be added only when the grading data does not meet the intention of the Scientific Committee from before the contest.
    • Late detections of issues, especially during the last 2 hours of the contest, may be grounds for extending the length of the contest.

    Results

    The results of the NOI competition will be announced on within one week of the contest at the competition website. The committee will work out arrangements for distributing medals and prizes of NOI 2022.

    The decision of the NOI Committee will be final.

    Remember, these rules & regulations are subject to changes.

    The above NOI rules are adapted from IOI 2017 rules, with modifications.
    Coding Environment

    The below details are not finalized yet. Listed below are the details for NOI 2019, which may be updated for NOI 2022.

    The competition computers are Intel PCs with Ubuntu 16.04 LTS, each equipped with a keyboard and a mouse.

    The following compilers will be installed on each computer:

    • g++ 4.8.4
    • JDK7 java 1.7.0
    • python 2.7.6 and 3.4.0

    The following editors/IDE will be installed on each computer:

    • Geany
    • GNU Emacs 24
    • CodeBlocks (not recommended)
    • Gvim
    • Command line vim and nano

    The following utility programs will be installed on each computer as well:

    • Firefox (Browser)
    • Document Viewer (PDF Viewer)

    The following documentation will be provided locally on the contestant machine:

    • Python 3.7.1 Docs
    • Java 7 and 8 Docs
    • CPP Reference with C++11, 14, 17 and 20
    Programming Languages

    C++

    C++ will be the main language of NOI. The Scientific Committee guarantees that there exists a solution to all tasks in C++ language. Template files (if any) will be provided in C++ language. The time limit and memory limit of tasks will be calibrated to those of C++ solutions.

    C++ solutions will be compiled in a 64-bit UNIX environment with g++-7.4.0 or later. "O2" compiler optimisation flag will be switched on. C++17 will be supported.

    Java

    Java is allowed for NOI. Template files (if any) will also be provided in Java language. However, the Scientific Committee does not guarantee that there exists solutions to all tasks (and subtasks) in Java language. There will be no extra time and memory limit for Java applications.

    Java solutions will be executed in a 64-bit UNIX with JDK. Java 8 (or better) will be supported. As Java applications might use more than one thread, the time limit is applied to sum of runtime across all the threads of the Java application.

    Java users are advised to be familiar with techniques to process input quickly in order to stay within the time limit.

    Python

    Python 3 is allowed for NOI. Similar to Java, the Scientific Committee does not guarantee that there exist solutions to all tasks (and subtasks) in Python language. In addition, template files will not be provided in Python language and hence Python users will only be able to attempt tasks that are of the "Batch" type. There will be no extra time and memory limit for Python applications.

    CPython would be used as the interpreter, not PyPy or other variants. Submissions would be judged in a 64-bit UNIX environment using Python 3.6.9.

    Committee 2022

    Chairman: A/Prof Tan Sun Teck

    Vice Chairman: Dr Steven Halim

    Secretary: Dr Daren Ler

    Scientific Chair: Prof Sung Wing Kin, Ken

    Technical Chair: Mr. Lai Zit Seng

    Admin: Mrs Ho Siew Foong, Ms Teo Pei Pei

    Technical Admin: Mr Leong Wai Kin

    Webmaster: Dr Daren Ler

    Operations Team

    The NOI operations team is tasked with handling the overall co-ordination between different committees. They are also tasked to communicate with various participants and their team representatives for the registration process. The following are the members of the NOI 2020 Operations Team:

    • Gan Wei Liang
    • Lin Si Jie
    • Ranald Lam
    • Wang Zhi Jian
    • Zhang Guangxuan

    Scientific Committee

    The NOI Scientific Committee is tasked with the setting, preparation, and selection of problems for all contests of the NOI. The following are current members of the NOI Scientific Committee:

    • Prof. Sung Wing Kin, Ken (Chair, Scientific Committee)
    • Ling Yan Hao
    • Benson Lin Zhan Li
    • Bernard Teo Zhi Yi
    • Marc Phua Hsiao Meng
    • Lim Dewen, Aloysius
    • Jeffrey Lee Chun Hean
    • Teow Hua Jun
    • Ng Yu Peng
    • Leong Eu-Shaun
    • Damian Ho Xu Yang
    • Adriel Tan Jean Ren

    Technical Committee

    The NOI Technical Committee is tasked with the preparation and maintenance of contest infrastructure and configuring of contest problems for the NOI. The following are current members of the NOI Technical Committee:

    • Lai Zit Seng (Chair, Technical Committee)
    • Ho Jie Feng
    • Wang Zhi Jian