# What is the difference between two codes? Can anyone please explain me?

In yesterday’s weekend contest at coding ninja’s platform, in the first problem named Minimize Bill when I tried to submit the first code it showed me the Partially Accepted but when I submited the editorialist code after the contest it showed me Accepted. I think the logic of two solutions are almost similar. Can anyone please tell me why my code fails?

// My solution

long long int totalBill(int n, vector<int> &a)
{
sort(a.begin(), a.end());

int maxx = a[n - 1];
long long int sum = 0;

for (long long int i = 0; i < n - 1; i++)
{
sum = sum + a[i];
}

long long int ans = sum - maxx;

return ans;
}

// Editorialist Solution

long long int totalBill(int n, vector<int> &a)
{
int maxx = a[0];
long long int sum = 0;

for(long long int i = 0; i < n; i++)
{
maxx = max(maxx, a[i]);
sum = sum + a[i];
}

long long int ans = sum - (2 * maxx);

return ans;
}


What is the difference between the logic of this two codes?

What are the constraints for N and arr[i]?

##### Constraints -
1 <= 'T' <= 10
1 <= 'N' <= 10^5
-10^6 <= 'A[i]' <= 10^6
Sum of 'N' over all test cases doesn’t exceed 10^5.

Time Limit: 1 sec


I see a message saying \red{\text{Time limit exceeded}} after submitting your code. An O(N\log{N}) solution should pass in the given time limit for the given constraints.

The version of g++ (g++ 5.4) could be the reason for \red{\text{TLE}}. I don’t see any other flaw.

Edit: The same logic gives \green{\text{AC}} when implemented in Python 3.5.

Screenshot

Thanks for such a good clarification. Thank You.