1. Create a pseudocode algorithm that will accept the name of the motorists and the type of offence for the ticket. Determine if the tickets will be awarded a demerit point and check the current point(s) each motorist has on his or her licence. Display the updated points for the motorist. If the motorist has over 19 points, his or her licence will be suspended for 2 years. Other suspensions are based on 10 – 13 points for 6 months suspension and 14 – 19 points for 1 year suspension. Store the list of all suspended motorists. Display the names of the suspended motorists and the penalties.

read name, offence

points = findpoints(offence)
p = addpoints(name,points)
suspension = (p>19):24?(p>13):12?(p>9):6:0
if suspension > 0 then
  addsuspension(name,suspension)
  display name,p,suspension
end if

Here is a pseudocode algorithm that accepts the name of the motorists, the type of offense, determines demerit points, checks the current points on the license, displays the updated points, and stores the list of suspended motorists:

1. Start
2. Initialize empty lists: "suspended_motorists", "demerit_points"
3. Set "suspension_period" as an empty dictionary with keys as points range and values as suspension periods
- "10-13" -> 6 months
- "14-19" -> 1 year
- "20+" -> 2 years
4. Initialize variable "points" as 0
5. Repeat the following steps until the user wants to exit:
6. Accept input "motorist_name" from the user
7. Accept input "offense_type" from the user
8. If "offense_type" is a minor offense:
- Add 1 to "points" and display "1 demerit point added for the motorist."
9. If "offense_type" is a major offense:
- Add 3 to "points" and display "3 demerit points added for the motorist."
10. If "points" is greater than or equal to 20:
- Add "motorist_name" to "suspended_motorists" list
- Display "License suspended for 2 years due to exceeding 19 points."
11. Else if "points" is between 14 and 19 (inclusive):
- Add "motorist_name" to "suspended_motorists" list
- Display "License suspended for 1 year due to exceeding 14-19 points."
12. Else if "points" is between 10 and 13 (inclusive):
- Add "motorist_name" to "suspended_motorists" list
- Display "License suspended for 6 months due to exceeding 10-13 points."
13. Else:
- Display "License does not need suspension."
14. Add "motorist_name" and "points" to the "demerit_points" list
15. Display "Updated demerit points for motorist_name: points"
16. Ask the user if they want to continue
17. Display "List of Suspended Motorists and Penalties:"
- For each "motorist" in "suspended_motorists":
- Display "motorist: suspension_period[motorist points range]"
18. End

Note: This pseudocode assumes that you have input/output capabilities and a method to handle user interactions and store data structures. Please convert the pseudocode into a programming language of your choice to implement the solution.