Cod sursa(job #2458139)

Utilizator AsthenichDog390Alex Preda AsthenichDog390 Data 19 septembrie 2019 19:07:56
Problema Cautare binara Scor 100
Compilator cpp-64 Status done
Runda Arhiva educationala Marime 1.44 kb
#include <bits/stdc++.h>

using namespace std;
ifstream in("cautbin.in");
ofstream out("cautbin.out");
int v[100001];

int main()
{
    int n,m,i,j;
    in>>n;
    for(i=0; i<n; i++)
        in>>v[i];
    in>>m;
    int a,b,poz;
    for(j=1; j<=m; j++)
    {
        in>>a>>b;
        if(a==0)
        {
            int start=0,stop=n-1,mid;
            while(start<=stop){
                        mid=(start + stop)/2;

                        if(v[mid] <= b)
                              start=mid+1;
                        else
                              stop=mid-1;
                  }
                  if(v[stop]==b)
                        out<<stop+1<<"\n";
                  else
                        out<<-1<<"\n";
        }
        if(a==1)
        {
            int start=0,stop=n-1,mid;
            while(start<=stop)
            {
                mid=(start+stop)/2;
                if(v[mid]<=b)
                    start=mid+1;
                else
                    stop=mid-1;

            }
            out<<stop+1<<'\n';
        }
        if(a==2)
        {
            int start=0,stop=n-1,mid;
            while(start<=stop)
            {
                mid=(start+stop)/2;

                if(v[mid]>=b)
                    stop=mid-1;
                else
                    start=mid+1;
            }
                  out<<start+1<<'\n';
        }
    }
    return 0;
}