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.

Second solution

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!