What and where should I study for competitive programming? I am currently in the 10th grade. I would like to get started in competitive programming. This are the things I know now:
Mathematics - Currently in pre-calculus Well Mathematics in my country is pretty unstructured. You would be studying bits of everything, and not one after the other. So I self studied up to Algebra II (Algebra I, geometry) so that I can cover it in more depth than in my school, though in school I'm learning through trigonometry stuff, algebra I &amp; II stuff and geometry in varying orders.
Programming:
1.Knows the basics of C, Python, C++(main currently learning)
CS50X completed
HTML,CSS ,JS and sqlite3 with python
What I want to learn for competitive programming(I am unsure):
Discrete Mathematics
Algorithms
Data Structures
4.Dynamic Programming
and I am hoping you'll help me to structure the remaining necessities and knowledge required. I found some blogs at many places but they were incomplete i.e. they are not well enough for beginners to you know get started on.
I am aiming currently for IOI.
UPDATE:
I am from India.
National qualifications:
These are the stages of IOI qualification in my country:
1.Zonal Olympiads - Either written(pen &amp; paper) or Programming or both
(about 500-800 participants in each)

Next round National Olympiads if qualified in previous (about 250 - 400 participants)

3.Next if qualified National training camp(about 30)
4.Top 4 are chosen from it to represent at IOI.
Edit: I am from India.
Edit: I am currently taking discrete mathematics online.
I believe I know where to practice.
Which should be first book/course/material to learn?
If your aiming for the IOI, the first step has to be figuring out how to get onto your country's delegation.  In the USA (where I am), that means USACO.  If not, then you will have to determine what that pathway is.  Every country has some method of determining delegates.
The next step would depend a lot on how those delegations are formed within your country.  You may have to join a team, and there will presumably be some sort of coach.  Most of your preparation and learning will probably focus on the competition used in your country.
And in terms of what to study, the competition itself looks to be very, very focused on algorithms.  Until you can find more specific resources to the competitions within your own nation, you could spend time practicing the older, published IOI problems and Project Euler problems, which seem similar in nature.
It's hard to be more specific than that without knowing your country of origin.
Good luck!!