I was solving this question: INVCNT on SPOJ.
I simply implemented the Merge Sort variant that counts inversions as well: First solution.
This returns a correct solution for the all the test cases I could think of, but then I realized that inversions could go beyond 10^8, so I changed this implementation to use long long instead.
Now weirdly, this solution returns a different value every time I execute it. I have initialized all variables. For example, trying this test case:
1 5 5 4 3 2 1
The answer should be 10, and the
int solution does get this correct, but the
long long solution keeps changing its answer every time I execute it. It usually gives answers in the range 13, 14, 15
I am fairly new to C++, please help me debug this. Is my solution correct? Why is the value changing every time even though the variables seem to be initialized?
Thanks for the help!