# HackerEarth Help John HSBC problem solution

In this HackerEarth Help John <HSBC> problem solution you are required to collect N numbers from a bag. Initially, the bag is empty. Whenever you put a number X in the bag, then the owner of the bag asks the question.

The questions are as follows:
1. What is the greatest integer that is smaller than X and present inside the bag?
2. What is the smallest number that is greater than X and present inside the bag?
If you answer both the questions correctly, then you can put X inside the bag. Your task is to answers the questions that are asked by the owner of the bag.

## HackerEarth Help John HSBC problem solution.

`#include<bits/stdc++.h>using namespace std;int main(){  int n;  set<int> s;  cin >> n;  while(n --)  {    int x;    cin >> x;    s.insert(x);    auto it1 = s.find(x);    auto it2 = it1, it3 = it1;    if(it1 == s.begin())    cout << "-1";    else    {      it2 --;      cout << *it2;    }    if(*it3 == * s.rbegin())    cout << " -1" << endl;    else    {      it3 ++;      cout << " " << *it3 << endl;    }  }  return 0;}`

### Second solution

`#include <bits/stdc++.h>#define mod 1000000007#define INF INT_MAX#define max_range 1 << 20#define ll long long#define fast ios_base::sync_with_stdio(false);cin.tie(NULL);using namespace std;ll power(ll x,ll y) {ll res=1; x =x%mod; while (y > 0) {if(y&1)res=((res*x)%mod+mod)%mod; y=y>>1; x=((x*x)%mod+mod)%mod;} return res;}vector<vector<ll> > newdp(ll A, ll B){ vector<vector<ll> > dp; dp.resize(A+1);for(int i = 0; i < A+1; i++){dp[i].resize(B+1);for(int j = 0; j < B+1; j++)dp[i][j] = -1;} return dp;}vector<ll> all_prime;void prime(){ bool hash[1000000];memset(hash,false,sizeof hash); for (int p = 2; p * p < 1000000; p++)if (hash[p] == true)for (int i = p * 2; i < 1000000; i += p)hash[i] = false;for(int i = 2;i < 1000000; i++) if(hash[i]) all_prime.push_back(i);}vector<ll> v[max_range];int main(int argc, char const *argv[]){  ll n;  cin>>n;  set<ll>s;  for(int i=0,ele;i<n;i++)  {       cin>>ele;        if(i==0)    cout<<"-1 -1\n";      else{          auto itr = s.lower_bound(ele);                    ll frst=-1,sec=-1;                    if(itr==s.begin())       {frst = -1;sec = (*itr);}          else if(itr==s.end())    {sec  = -1;(itr--);frst = (*itr) ;}          else                   {sec = (*itr) ; (itr--) ; frst =(*itr);}                    cout<<frst<<" "<<sec<<endl;         }        s.insert(ele);  }  return 0;}`