The use of global variables is not appropriate here.
1 2 3 4 5
int nNumberOfContestants = 0;
int *nContestants = newint[nNumberOfContestants];
// The above means that you actually do:
int *nContestants = newint [ 0 ];
// And that is an empty array.
But do not worry. That is not all. Even if the size of array would be equal to the number given by the user, the <= in loops will still lead to out of range, i.e. an error.
You do this in the global scope: int *nContestants = newint[nNumberOfContestants];
I wasn't aware that this was legal, but it would be done before any code. Since, at this time, nNumberOfContestants is 0, you have an array of size 0. What you should do is move this line down to line 24 (right after you write to: nNumberOfContestants).
The second issue is that you do this: for(int iii = 0; iii <= nNumberOfContestants; iii++)
but it should be for(int iii = 0; iii < nNumberOfContestants; iii++)
Let's say you have an array of 4. You can access m_array[0], m_array[1], m_array[2], m_array[3]. If you try and access m_array[4], then you're accessing memory which is not meant for you. This will often even cause the crashes.