#include
#include
using namespace std;
int main(){
int t,n,i,diff=0,s[10001];
cin>>t;
while(t--){
cin>>n;
for(i=0;i<n;i++)
cin>>s[i];
sort(s,s+n);
//for(i=0;i<n;i++)
//cout<<s[i];
for(int i=1;i<n;i++){
diff=s[1]-s[0];
if(diff>(s[i]-s[i-1])){
int temp=0;
temp=diff;
diff=temp;
}
}
cout<<diff<<endl;
}
return 0;
}
Your code gives wrong answer for this case
4 9 1 15 13
There are two mistakes ( three if you use the same loop iteration )
- Main mistake :You are assigning the value of
diff
to s[1]-s[0]
in the statement diff=s[1]-s[0];
at every iteration.
- In your code the inner if block is not doing any useful work, only assigning diif to 0.
if(diff>(s[i]-s[i-1])){
int temp=0;
temp=diff;
diff=temp;
}
- Change (not necessarily, depends on your implementation ) the for loop starting and ending values.
Put the statement diff=s[1]-s[0];
before the for loop and change the inner if block.
Check your same code Accepted with the above modifications by me here.
For memory optimization you can use array size of 5001 as the constraint is 2 ≤ N ≤ 5000
. You are using large array size which requires more memory.
1 Like
Thanks @mediocoder , you helped me again
You’re welcome, glad to help.