Sunday, 4 November 2012

Find a pair of elements from an array whose sum equals a given number

Q.) Find a pair of elements from an array whose sum equals a given number (a,b)

source code:

#include
#include
using namespace std;
int main()
{
    int num, X,i,ub,lb,search_num,mid,flag;
    printf("enter the size of array=");
    scanf("%d",&num);
    scanf("%d",&X);
    int arr[num];
    for(i=0;i<num;i++)
        scanf("%d",&arr[i]);
    sort(arr,arr+num);
    for(i=0;i<num;i++)
    {
        //binary search of search_num//
        search_num=X-arr[i];
        lb=0,ub=num-1,flag=0;
        if(search_num>0)
        {
            while(lb<=ub)
            {
                mid=(lb+ub)/2;
                if(arr[mid]==search_num)
                {
                    flag=1;
                    break;
                }
                else if(arr[mid]>search_num)
                    ub=mid-1;
                else
                    lb=mid+1;
            }
        }
        if(flag==1&&mid!=i){
            printf("(%d,%d)\n",arr[i],arr[mid]);
           num=num-1; //decreasig the size of the array to stop reapeating ans like (1,11) (11,1)//
        }
    }
    return 0;
}

No comments: