Graph questions are easy and the difficulty in DP varies a lot. You can easily do some subtasks of the DP problem and qualify.
You don’t need number theory algo, geometry or any other data structure other than you already know because it’s not in the INOI syllabus.
Flows and String Algorithms are not even in the IOI syllabus and Hashing is not in the INOI syllabus.
Map,vector,pair,sorting and comparator are mostly all that is needed for convenience.
You can compare the DP problems to USACO Gold level and Graph is Silver maybe. Even the USACO difficulty level differs each month. Codeforces contest again are sometimes hard or easy but I guess it would be about Div2 D or Div1 B at most in difficulty.
This is a codeforces blog which has topics and few problems on it with difficulty marker on most of them. You can easily find their solution easily by googling.
You actually don’t need Fast IO in INOI because they have generous time limit and you will not get TLE because of using long long int instead of int or some constant factor in your solution.
P.S I see that you got 200 in ZCO so that indicates you are doing good and will mostly qualify INOI with this much knowledge.
@kayak A comparator is just a function which compares which container should go first from a pair when you sort. It’s basically how you want something to be sorted. Maybe you want your “pair” to be sorted in non-decreasing order of second element so you need to write a custom comparator because its sorted by the left element by default. Here ( http://fusharblog.com/3-ways-to-define-comparison-functions-in-cpp/ ) is a nice link to understand them.
The INOI syllabus is the topics under Basic Topics ( https://www.iarcs.org.in/inoi/online-study-material/topics/ ) . Yes, you are right, there was a bit more mathematical question in 2015 but very few people solved it so they stopped asking those kind of problems I have not seen a geometry problem in INOI and some easier national OIs and they won’t come because most people fear geometry. This is what I think.