Cod sursa(job #2252097)

Utilizator marcogoldPop Mihali Marco Silviu marcogold Data 2 octombrie 2018 12:13:08
Problema Cautare binara Scor 0
Compilator cpp Status done
Runda musai_must Marime 1.16 kb
#include <iostream>
#include <fstream>
using namespace std;

ifstream fi("cautbin.in");
ofstream fo("cautbin.out");


long long n,caz,cautat,nrTeste,a[100005];
int main()
{
  fi>>n;
  for(int i=1;i<=n;i++)
    fi>>a[i];

  fi>>nrTeste;

  for(int i=1;i<=nrTeste;i++)
  {
      fi>>caz>>cautat;

 long long poz=0;

      if(caz==0)
      {



        for(int i=(1<<30);i>0;i/=2)
        {
            if(poz+i<=n && a[poz+i]<=cautat )
            {
                poz+=i;
            }
        }

        if(a[poz]==cautat)
            fo<<poz<<endl;
        else
            fo<<-1<<endl;


      }

      if(caz==1)
      {
            for(int i=(1<<30);i>0;i/=2)
        {
            if(poz+i<=n && a[poz+i]<=cautat )
            {
                poz+=i;
            }
        }



        fo<<poz<<endl;
      }

      if(caz==2)
      {
              for(int i=(1<<30);i>0;i/=2)
        {
            if(poz+i<=n && a[poz+i]<cautat )
            {
                poz+=i;
            }
        }

        if(a[poz+1]==cautat)
            poz++;

        fo<<poz<<endl;

      }
  }

    return 0;
}