National Olympiad in Informatics


Programme of 20th NOI 2017

Date: Saturday, 18 March 2017
Venue: Programming Labs, Block COM1, School of Computing, NUS
Start Time: 0900
0730: Registration Seminar Room 1, COM1
0815: Briefing Seminar Room 1, COM1
0900: Start of NOI competition Programming Labs, COM1
1400: End of NOI competition. Programming Labs, COM1
1400: Lunch will be provided to all contestants Basement foyer
1445: Visit to Garena (Transport will be provided.) One-North
1715: Return to SoC from Garena (Transport will be provided.) Seminar Room 1, COM1
1800: Award Ceremony Seminar Room 1, COM1
1900: Dinner for all attendees Seminar Room 1, foyer
Attendance at the award ceremony is compulsory. Participants who do not attend this ceremony will not receive any certificate and will forfeit all medals and prizes.
  • 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 granted.

  • Eligibility of participants
    1. NOI is open to all current junior college and secondary school students, regardless of their nationality or citizenship (see note 1), 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

    The top four overal winners will each get a 42mm Apple Watch Sport. One more 38mm Apple Watch Sport will be given to the top foreign contestant who achieve a gold medal standard. The youngest medallist, female medallist, and two top secondary school contestants will each get a 38mm Apple Watch Sport.

    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 2017 is held in Tehran, Iran, from 28 July to 4 August 2017.

    Rules & Regulations

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

    The 20th NOI Competition

    The 20th NOI competition will be held on Saturday, 18 March 2017.

    Contestants are to report in school uniform at 07:30am outside Seminar Room 1, Block COM1, Level 2, School of Computing. You will mark your attendance, and collect your name tag there. At 08:15am, a briefing to all contestants will be conducted. You will then proceed to the competition rooms on the basement of Block COM1, School of Computing.

    At 09:00am, five programming tasks will be given out to the contestants, who will individually code the solutions within five hours. Light snacks and drinks will be provided during the session.

    Any contestant who reports after 10.00am is deemed to be absent and will not be allowed to participate, and will not receive the Certificate of Participation.

    Contestants do not need to be present for judging.

    The results of the 20th NOI will be announced on the same day 18 March 2017, at 6:00pm onwards during the prize-giving ceremony. All contestants are required to attend the prize-giving 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.

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

    The task statements list out for each task, the execution time limit that applies to every test run, the number of test data sets, and the maximum points awarded for the task.

    Your Programs

    While you may choose to write your programs in any of the programming languages offered, to enable objective judging you must compile your programs as stand-alone executables.

    For C and C++ programmers, your main function should not require any arguments.

    The input and output operations will be kept simple, allowing you to concentrate on the algorithmic details. No special features of the programming packages are needed, nor should they be used. In particular, the following features will NOT play a role in the programming tasks: Graphical output, mouse input, advanced file manipulation, advanced numeric processing and system calls.

    You should be familiar with the programming package of your choice. Your ability to use the Integrated Development Environment (IDE), in particular, the built-in editor, compiler and the debugger, will be helpful. Some knowledge of compiler options may also be an advantage. Furthermore, you should be able to use Linux for such tasks as executing a program, changing the working directory and managing files.

    The only external communications allowed by your programs are reading from standard input, writing to standard output, and (if any) calling external functions in libraries that are specified in the task descriptions.

    Input Data

    Programs should read their input data from standard input as ASCII text. This is the case even if the program needs only a single value.

    You may assume that the input data agrees with the task description, and the data sets used in the judging do not contain errors.

    Input data consist of a sequence of items. An item is either an integer or a non-empty character string of letters ('a' to 'z', 'A' to 'Z'), digits ('0' to '9') and/or other characters ('@', '$', '*', etc.). Items are separated by either a single space character or a single end-of-line.

    In general the structure of the input is such that you do not have to worry about end-of-line and end-of-file conditions. There may, however, be exceptions to this. In any case, the task description will indicate so if an exception exists.

    At least one sample input file is provided for each competition task, both in the task description and the task directory. However, successful execution of your program on the sample file does not necessarily guarantee that your program is correct.

    Output Data

    Programs should write their output data to the standard output as ASCII text exactly as specified in the task description.

    Output data consist of a sequence of items. An item is either an integer or a non-empty character string of letters ('a' to 'z', 'A' to 'Z'), digits ('0' to '9') and/or other characters ('@', '$', '*', etc.). Items are separated by either a single space character or a single end-of-line.

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

    Intermediate Files

    No files are to be read by your programs. Also, your programs must not create any files during execution.

    The Contest

    The following rules govern the execution of the contest.

    Starting the Competition

    When you enter the competition room, your allocated computer will already have been switched on. The competition task descriptions will be distributed to you at the start of the competition.

    You must not communicate with your friends during the competition, either in the competition room, or outside. Do not touch the keyboard until the start signal is given.

    Questions and Assistance

    During the first two hours of the competition you may submit questions through the online submission system concerning any possible obscurities or ambiguities in the competition task descriptions. Each question must be written in English and must be phrased as a True/False question. Each question will be answered with only one of the following responses: Yes, No, No Comment, Answered in the Task Description, or Invalid Question.

    Your question(s) may take some time to be answered, so you should continue working while waiting for the answer(s) to your question(s).

    You may ask the lab supervisors for assistance at any time. The supervisors will NOT answer questions about the competition tasks, but will help you find toilets, refreshments, and attend to computer problems.


    During the competition you may get printouts of ASCII files. You may print your code through the online submission system.


    Copy of files submitted to the online submission system are saved. You can retrieve old copies of your code. 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.

    Ending the Competition

    You will be warned at 15 minutes and again at 5 minutes before the end of the competition. Take this opportunity to go through the following check list for the tasks:

    • Have your submitted your program to the submission system?
    • Have you disabled the debug features in your programs?
    • Have you removed unneccessary screen output?
    • Do your programs produce output in the expected format?

    When the TIME'S UP signal is given, you must immediately stop working.

    Do NOT switch off your computer.

    Remember, these rules & regulations are subject to changes.


    Chairman: A/Prof Tan Sun Teck

    Vice Chairman: Dr Steven Halim

    Secretary: Dr Colin Tan

    Scientific Chair: Prof Ken Sung

    Technical chair: A/Prof Chan Mun Choon

    Admin: Mrs Ho Siew Foong, Ms Teo Pei Pei

    Technical Admin: Mr. Leong Wai Kin

    Coding Environment

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

    Writing pad and pens will be provided. As this is an open-book competition, you may bring in books and notes. You are NOT allowed to bring in computers, diskettes or other computing and electronic devices (except calculators and non-smart watches). You are to turn off your MP3 player, handphone, etc. and keep them inside your bag.

    The following compilers will be installed on each computer:

    • fpc 2.2.0
    • gcc 4.1.2
    • g++ 4.1.2
    • JDK 7

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

    • Geany
    • Kate
    • KWrite
    • KDevelop
    • vim and gvim
    • GNU Emacs, XEmacs
    • Lazarus

    Firefox will be available as the browser.