 # Wrong answer for the given problem

Given n integer numbers, count the number of ways in which we can choose two elements such
that their absolute difference is less than 32.
In a more formal way, count the number of pairs (i, j) (1 ≤ i < j ≤ n) such that |V[i] - V[j]| < 32. |X|
is the absolute value of X.
This is my code but I did n’t understand why WA? Help me to figure it out.
#include<bits/stdc++.h>
using namespace std;
int hash;
int main()
{
int tc,n,A,i,cnt,j;
cin>>tc;
while(tc–)
{
memset(hash,0,sizeof(hash));
cin>>n;
cnt=0;

``````    for(i=0;i<n;i++)
{
cin>>A[i];
hash[A[i]]++;
}
for(i=2;i<=10034;i++)
{
hash[i]=hash[i]+hash[i-1];
}
for(i=0;i<n;i++)
{
cnt+=hash[A[i]+31]-hash[A[i]];
hash[A[i]]--;
}
cout<<cnt<<"\n";
}
``````

}

hello Tirth Bal

have you tried with long ? int may overflow

can element of array be negative ?

if max is largest element of array then size of hash array must be >= max+31. and one thing that i notice is that you did not sort array ?

if larger element come first then you will lose the value of hash array of that element (hash[i]–) which will be used when smaller element come later. and if you don’t wanna sort then make two copy of hash array hash1,hash2

ans+=hash1[A[i]+31]-hash2[A[i]];

hash2[A[i]]–;

i think it would help you. although i don’t know the Constraints of question may be it is wrong 