Schedule of 22nd NOI 2019
1 February Registration deadline for Online Preliminary Contest before 2359
9 February NOI Online Preliminary Contest 0900 - 1200
1 March Registration deadline for NOI before 2359
22 March Registration and Practice Session 1700 - 1930
23 March Contest and Award Ceremony 0730 - 2000

Note that the venues and competition details mentioned below are subjected to changes. Please check back this page for updates. There will be a briefing before the actual NOI for any last minute changes, if any.

Online Preliminary Contest Updated 01-Jan-19
Date: 9 February 2019
Contest: 3 tasks in 3 hours
Languages supported: C++, Java*, Python 2* *See Programming Languages
Contest URL: [Emailed to contestants]
0900 Start of NOI Online Preliminary Contest
1200 End of NOI Online Preliminary Contest

The NOI Online Preliminary Contest is an optional contest for schools that have expressed interest in it. Participants can participate in this online contest either from school or from home. Unlike the actual NOI, there are no restrictions on the number of participants from each school. In addition, students are welcome to refer to any materials online or offline. However, they are not allowed to communicate the solutions with one another or discuss the solutions online before the end of the contest.

Each participant of the NOI Online Preliminary Contest will receive a Certificate of Participation if and only if they score a positive score in the online contest. The NOI Committee will not be awarding any medals or other prizes for this contest. The decision of the NOI Committee is final.

It is strongly recommended for every participating school to register for the preliminary contest as a form of practice.

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

The deadline for doing so is 1 February 2019.

Registration and Practice Session Updated 17-Mar-2019
Date: 22 March 2019
Time: 1730 to 2030
Practice Session: 3 tasks in 1 hour
Languages supported: C++, Java*, Python 2* *See Programming Languages
1730 Registration and Dinner Reception Seminar Room 1, COM1
1830 Briefing Seminar Room 1, COM1
1930 Start of Practice Session Programming Labs (COM1, I3)
2030 End of Practice Session Programming Labs (COM1, I3)

The Practice Session will be conducted on the actual hardware and environment of the actual NOI competition. Students should utilise this opportunity to familiarise themselves with the contest environment and the contest systems before the actual competition.

It is compulsory for all NOI participants to attend the briefing and practice session.
Contest and Award Ceremony Updated 19-Mar-2019
Date: 23 March 2019
Time: 0730 to 2000
Contest: 3 to 5 tasks in 5 hours
Languages supported: C++, Java* and Python 2* *See Programming Languages
0730 Reporting time Outside Programming Labs (COM1, I3)
0730 Breakfast (Bento Box) Outside Programming Labs (COM1, I3)
0830 Start of NOI Contest Programming Labs (COM1, I3)
1330 End of NOI Contest Programming Labs (COM1, I3)
1345 Lunch Foyer outside Seminar Room 1, COM1
1430 Capture the Flag Competition (organised by NUS Greyhats) Programming Labs (COM1 only)
1630 End of Capture the Flag Competition Respective Programming Labs (COM1 only)
1700 Solution Presentation by NOI Scientific Committee Seminar Room 1, COM1
1730 Presentation by NOI Donors Seminar Room 1, COM1
1830 Award Ceremony Seminar Room 1, COM1
1930 Buffet Dinner Foyer outside Seminar Room 1, COM1
Attendance at the award ceremony is compulsory. Participants who do not attend this ceremony will not receive any certificate, will forfeit all medals and prizes, and will not be officially archived in the NOI website.
  • Limit on number of contestants from each school
    Each school may send in at most five (5) participants in each of the junior college and secondary school category. Interested students should register through their schools.

  • Replacement
    No replacement of participant is allowed after the registration deadline, except if prior notice has been given and approval is granted.

  • 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. The top contestants of NOI at year n will be invited to the training team of IOI'n.
  • 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 as well as the top foreign contestant.
    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 to both local and invited foreign participants.

    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 2019 is held in Azerbaijan, Baku, from 4 to 11 August 2019.

    Rules & Regulations

    Competition Schedule

    NOI comprises of one consecutive 5-hour contest session. During the contest, contestants will be given 3 to 5 tasks to be solved under time constraints.

    Practice Session

    There will be a one-hour Practice Session prior to the actual contest, to familiarize 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. He will also not receive the Certificate of Participation.


    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 2019).

    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 fufils 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-exhausive):

    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).


    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.

    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 competition. Since this 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).


    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 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.


    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 final score for each submission will be the sum of scores for all its subtasks. The score for each task will be maximum score 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 50, the maximum of both submissions.)

    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.


    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.


    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.


    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.


    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 behavior 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 behavior would be considered cheating only if a contestant submits 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.


    The results of the NOI competition will be announced on the same day during the closing and award ceremony. All contestants are required to attend the closing and award ceremony.

    Participants who do not attend the prize giving ceremony WILL NOT be able to collect their certificates or prizes.

    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 and might vary without notice.

    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 (Do note that the competition server does not support python 3)

    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++ 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 enviroment with g++-4.8 or later. "O2" compiler optimisation flag will be switched on. Either C++11 or C++14 will be supported, but not both.


    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 compiled in a 64-bit UNIX with "gcj". Java 1.4 (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 2 is allowed for NOI. Python 3 is not supported at the moment, due to technical constraints. Similar to Java, the Scientific Committee does not guarantee that there exists 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 2.7.

    The main differences of Python 2 and 3 can be found here.

    Committee 2019

    Chairman: A/Prof Tan Sun Teck

    Vice Chairman: Dr Steven Halim

    Secretary: Dr Colin Tan

    Scientific Chair: Prof Sung Wing Kin, Ken

    Technical Chair: A/Prof Richard Ma

    CTF Chair: Dr. Sufatrio

    Admin: Mrs Ho Siew Foong, Ms Teo Pei Pei

    Technical Admin: Mr. Leong Wai Kin

    Webmaster: Ranald Lam, Lin Si Jie

    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 2019 Operations Team:

    • Gan Wei Liang
    • Lin Si Jie
    • Pang Wen Yuen
    • Ranald Lam

    Scientific Committee

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

    • Prof. Sung Win King, Ken (Chair, Scientific Committee)
    • Dr. Steven Halim
    • Pang Wen Yuen
    • Zhang Guangxuan
    • Lim Li
    • Chang Si Yuan
    • (Christopher) Boo Kai Hsien

    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:

    • A/Prof Richard Ma (Chair, Technical Committee)
    • She Zhaochen
    • Pravein Govindan Kannan

    Capture the Flag (CTF) Committee

    The CTF Committee is tasked with the preparation and organisation of the Capture the Flag (CTF) competition conducted during the NOI Competition.