Cod sursa(job #3204670)

Utilizator emmsdumitDumitrascu Emma emmsdumit Data 17 februarie 2024 11:28:00
Problema Cautare binara Scor 0
Compilator cpp-64 Status done
Runda Arhiva educationala Marime 1.22 kb
#include <fstream>

using namespace std;
ifstream cin("cautbin.in");
ofstream cout("cautbin.out");
int n,i,m,c,x,st,dr,mij,r,v[200005];

int main()
{
    cin>>n;
    for(i=1;i<=n;i++)
      cin>>v[i];
    cin>>m;
    for(i=1;i<=m;i++)
    {
      cin>>c>>x;
      if(c==0)
      {

        st=1;
        dr=n;
        while(st<=dr)
        {
          mij=(st+dr)/2;
          if(v[mij]==x)
          {
            r=mij;
            st=mij+1;
          }
          else
            if(v[mij]>x)
              dr=mij-1;
            else
              st=mij+1;
        }

        cout<<r<<"\n";
      }
      else if(c==1)
      {
        st=1;
        dr=n;
        while(st>=dr)
        {
          mij=(st+dr)/2;
          if(v[mij]<=x)
          {
            r=mij;
            st=mij+1;
          }
          else
            dr=mij-1;
        }
        cout<<r<<"\n";
      }
      else
      {
        st=1;
        dr=n;
        while(st<=dr)
        {
          mij=(st+dr)/2;
          if(v[mij]>=x)
          {
            r=mij;
            dr=mij-1;
          }
          else
            st=mij+1;
        }
        cout<<r<<"\n";
      }
    }
    return 0;
}