I know it looks like homework, but I guarantee it's not. One criticism might be that I don't provide clear examples of the problems with the 'naive approach' I suggest, but i felt like that would bloat the question a lot
I'm not asking for anyone to write code for me, I just want a suggestion for the data types I should use.