You are given a list of students' names and their test scores. Design an algorithm that does the following:
a. Calculates the average test scores.
b. Determines and print the names of all the students whose test score is below the average test score.
c. Determines the highest test score.
d. Prints the names of all the students whose test score is the same as the highest test score.
(You must divide this problem into sub-problems as follows: The first sub-problem determines the average test score. The second sub-problem determines and prints the names of all the students whose test score is below the average test score. The third sub-problem determines the highest test score. The fourth sub-problem prints the names of all the students whose test score is the same as the highest test scores. The main algorithm combines the solutions of the sub-problems.)