#include

#include

#include

using namespace std;

int main()

{int t,n,m,s[5000];

long long int d=1000000000;

cin>>t;

while(t>0)

{cin>>m;

n=m;

while(n>0)

{cin>>s[n-1];

n–;}

sort(s,s+m-1);

while(m>0)

{if(d>abs((s[m-1]-s[m-2])))

d=abs(s[m-1]-s[m-2]);

m–;}

cout<<d<<"\n";

t–;

}

}

There are many reasons why your solution is wrong:

- The size of the array s is m, so the sort function should be sorting from s to s + m.
- The value of d has to be renewed to 10^9 after every iteration, otherwise the solution is only valid for the first test case. By the way, it does not need to be long long int.
- The loop that finds the minimum difference must run only while m > 1, otherwise s[m - 2] will cause an error when m equals 1.

Link to fixed solution: CodeChef: Practical coding for everyone

I hope this helps.