In this HackerEarth Finding Pairs problem solution Given an array A of N numbers, find the number of distinct pairs (i, j) such that j >=i and A[i] = A[j].

First line of the input contains number of test cases T. Each test case has two lines, first line is the number N, followed by a line consisting of N integers which are the elements of array A.

For each test case print the number of distinct pairs.

HackerEarth Finding Pairs problem solution


HackerEarth Finding Pairs problem solution.

#include <iostream>
using namespace std;

int main()
{
int t;
cin>>t;
while(t--)
{
long long int n;
cin>>n;
int pos[1000001]={0};
int neg[1000001]={0};
for(long long int i=0;i<n;i++)
{
int x;
cin>>x;
if(x>=0)
pos[x]++;
else
neg[-x]++;
}
long long int ans=0;
for(int i=0;i<=1000000;i++)
{
if(pos[i]>0)
{
ans+= (pos[i]*(pos[i]+1)/2);
}
if(neg[i]>0)
{
ans+= (neg[i]*(neg[i]+1)/2);
}
}
cout<<ans<<endl;

}
return 0;
}