ICO | Preparatory Material
- If you enjoy solving algorithmic puzzles, but do not know programming, then you can appear for ZIO.
- You can try the following few most easy questions from past ZIO exams - goo.gl/bcfN3L
- You can start to solve past years ZIO questions, which we have archived here: www.codechef.com/ioi/zio along with the answers.
- The TCS iON Digital Hub for ICO has ZIO papers from 2014, 2015, 2016, 2017, 2018 and 2019 available as Practice Tests. You will need to login to attempt these and can take each of these tests five times through the Digital Hub. This will help you familiarize yourself with the interface that you will be using during the actual exam.
- Pick a programming language using which you are comfortable to program. The allowed languages are C, C++, Java and Python.
- One should at least know the basics of a language, do input/output in files, use array and functions.
- If you pick up C/C++, do not use Turbo C++.
- Turbo C++ uses an outdated compiler, yet it is taught in almost all schools across India. As Turbo C++ isn't implicitly supported by competitive programming websites (or anywhere else, for that matter), here is a tutorial to switch from Turbo C++ to G++ (GNU) by Foobar, IIIT-Delhi - https://docs.google.com/presentation/d/1WcB_KIqHcgg1HoKCfUp0znXhInGU8FszfkfpCHFmT84/edit
- To start solving on the online judge you can refer to the below links for each language
- For basic algorithms refer to the Indian Computing Olympiad study material, http://www.iarcs.org.in/inoi/online-study-material/index.php
- Introductory tutorials to get started if you know a programming language: https://www.codechef.com/ioi/basics
- Mathematics: Basic Number theory, Sets, Relations and functions, Introduction to Combinatorics, Logarithms, Complexity Analysis
- Language Constructs - C++ - 1: Introduction to C++, Data types, Control flow, I / O, Functions, Recursion, Notion of Structs
- Algorithms and data structures - 1: Searching, Sorting,
- Language Constructs - C++ 2: STL-Containers, Algorithms, Set, Map, Structs - Using them as comparators
- Algorithms and data structures - 2: Dynamic Programming, Graphs and Graph Algorithms, Sieves
- Following algorithms are the most important ones: Sorting, Basic Graph Algorithms, Greedy, Binary Search and Dynamic Programming.
- You can start to practice problems in the beginner section which are especially for school students. You can refer to the editorials provided for help.
- A handy guide for common mistakes and errors you might need: https://www.codechef.com/wiki/faq
- Try the IARCS archived problems here: https://www.codechef.com/IARCSJUD
- Once comfortable with the online judge, you can practice past years’ ZCO questions on this link: https://www.codechef.com/ZCOPRAC
- Follow these excellent tutorials starting from basic C++ programming to IOI Gold medal level tutorials on Commonlounge: International Olympiad in Informatics Training
Setting up the system environment
Make yourself familiar with the environment at the exam center. Mock exam page is available here: https://www.codechef.com/ICO20MCK. During the contest, when you submit the code, it will be evaluated against some test data files. These test data files will also be available for you to download and use on your system. The main purpose behind this is to reduce the negative effect of rare unfortunate events like the internet connection going down for a while in some center. In such scenarios, it'll be beneficial for you to know how to test your code locally using the command line. You can learn the basics of that, here. You can also use it to debug your code, if you are comfortable with it.
The following compilers and IDEs will be provided locally.
||gcc6.3 with support for C++14
||Code::Blocks or CLion
||Oracle Java 8
||Eclipse or IntelliJ Community Edition
||Python 2.7,Python 3.5
||PyCharm Community Edition
Sublime text and gedit will be provided as text editors.
You can install the Ubuntu OS and below mentioned softwares using the installation guide here.
For any help
If you are stuck somewhere, ask questions on discuss.codechef.com and get help from the community or feel free to contact us.
If you know of some other good resources, share with us on firstname.lastname@example.org and we will add to the list.