CouponDunia Count Pairs Problem
Problem Statement
Given N numbers , [N<=10^5] we need to count the total pairs of numbers
that have a difference of K. [K>0 and K<1e9] Input Format: 1st line contains N & K (integers). 2nd line contains N numbers of the set. All the N numbers are assured
to be distinct.
Output Format: One integer saying the no of pairs of numbers that have a diff K. Sample Input #00: 5 2 1 5 3 4 2 Sample Output #00: 3
Sample Input #01: 10 1 363374326 364147530 61825163 1073065718 1281246024 1399469912 428047635 491595254 879792181 1069262793 Sample Output #01: 0
Solution
#include<iostream>
#include<algorithm>
using namespace std;
int compare (const void * a, const void * b)
{
return ( *(int*)a - *(int*)b );
}
int main()
{
int n,k;
cin>>n>>k;
int a[n];
for(int i=0;i<n;i++)
cin>>a[i];
qsort(a,n,sizeof(int),compare);
int seq=0;
for(int i=0;i<n;i++)
{
int key=a[i]+k;
if(((int*)bsearch(&key,a+i+1,n-i-1,sizeof(int),compare))!=NULL)
seq++;
}
cout<<seq; }
Time Complexity : O(nlogn)
the complexity of the above algorithm is O(nlogn)[for sorting]+ O(nlogn)[n binary search = O(nlogn)]
ReplyDeletethe complexity of the above algorithm is O(nlogn)[for sorting]+ O(nlogn)[n binary search = O(nlogn)]
ReplyDeletethanks.
Deletedef pdiff(arr,k)
ReplyDeletea= arr.combination(2).to_a
a.select! {|i| ((i[0] - i[1]) == k || (i[1] - i[0]) == k)}
a.length
end