Hello.
I'm experienced in competitive programming - 1st place in Australia and 1% worldwide of IEEEXtreme Programming Competition. Therefore I am very experienced in algorithmic based questions.
For this questions, these are my observations:
1. E.g there're 4 teams and 1 discipline, how can it satisfy "Every team must only participate against another team ONCE in the whole tournament:"?
2. Let's say we have m teams and n disciplines. Total number of matches would be (m/2)*n.
3. A way to solved this would be:
- Iterate through all disciplines in a for loop. In that for loop, nest another for loop to iterate through the first team. Nested another for loop in that for the second team. This will put 1 vs 2, 1 vs 3, 1 vs 4, ... and then again 2 vs 3, 2 vs 4...
- To check if a team has already been selected in an discipline, we can use an boolean array selected[discipline][teamNumber].