In this HackerEarth Pair Sums problem solution You have been given an integer array A and a number K. Now, you need to find out whether any two different elements of the array A sum to the number K. Two elements are considered to be different if they lie at different positions in the array. If there exists such a pair of numbers, print "YES" (without quotes), else print "NO" without quotes.


HackerEarth Pair Sums problem solution


HackerEarth Pair Sums problem solution.

#include<bits/stdc++.h>
using namespace std;
int ar[1000002];
main()
{
int n,sum;
cin>>n>>sum;
for(int i=0;i<=1000001;i++)
ar[i]=0;
for(int i=1;i<=n;i++)
{
  int a;
  cin>>a;
  ar[a]++;
}
int left=0; int right=1000001;
bool ans=false;
while(left<right)
{
   if(ar[left]==0||ar[right]==0)
   {
     while(ar[left]==0)
     left++;
     while(ar[right]==0)
     right--;
   }
   if(left+right==sum&&left!=right)
   {
     ans=true; break;
   }
   else if(left+right>sum)
   right--;
   else if(left+right<sum)
   left++;

}
if(left+right==sum&&left==right&&ar[left]>1)
  ans=true;
if(ans)
cout<<"YES";
else
cout<<"NO";
}