In this HackerEarth Pairs Having Similar Elements problem solution, we have given an array, A, having N integers A1,A2,...,An.Two elements of the array Ai and Aj are called similar if Ai = Aj + 1 or Aj = Ai + 1.

## Hackerearth Pairs Having Similar Elements problem solution.

```#include <bits/stdc++.h>
using namespace std;
#define ll long long
int main() {
ios::sync_with_stdio(0);
cin.tie(0);
int n;
cin>>n;
int* a= new int[n];
for(int i=0;i<n;i++)
cin>>a[i];
sort(a,a+n);
ll ans=0;
ll ct=1,ctdis=1;
for(int i=1;i<n;i++){
if(a[i]==a[i-1]){
ct++;
}
else if(a[i]==(a[i-1]+1)){
ct++;
ctdis++;
}
else{
if(ct>=2&&(ctdis>=2)){
ans+=(((ct)*(ct-1))/2);
}
ct=1;
ctdis=1;
}
}
if(ct>=2&&(ctdis>=2)){
ans+=(((ct)*(ct-1))/2);
}
cout<<ans<<endl;

return 0;
}```

### Second solution

```#include<bits/stdc++.h>
using namespace std;
#define   pb              push_back
#define   REP(i,n)        for(i=1;i<=n;i++)
#define   FOR(i,a,b)      for(i=a;i<=b;i++)
#define   all(v)          v.begin(),v.end()
#define   F               first
#define   S               second
#define   vl              vector<LL>
#define   itr             ::iterator it
#define   lb              lower_bound
#define   ub              upper_bound
#define   LL              long long
#define   ULL             unsigned long long
#define   ret             return
LL n,i,j,ans = 0;
LL a[10000000] ;
void f(LL x)
{
ans += (x * (x-1))/2 ;
}
int main()
{
ios_base::sync_with_stdio(false);
cin.tie(NULL);
cin>>n ;
assert(n>=1 and n<=1000000) ;
REP(i,n)
{ cin>>a[i] ;
assert(a[i]>=-1000000000 and a[i]<=1000000000) ;
}
sort(a+1,a+1+n) ;

LL x = 0 ;
for(i=1;i<=n;i++)
{  LL k = 0,l = 0   ;
for(j=i+1;j<=n;j++)
{  k = max(k,a[j]-a[j-1]) ;
if(k==1) l++ ;
if(k>1) break ;
}
if(l)
f(j-i) ;
i = j - 1 ;
}
cout<<ans<<endl ;

}```