Cod sursa(job #2619310)

Utilizator andreea.vasilescuAndreea Vasilescu andreea.vasilescu Data 27 mai 2020 14:15:42
Problema Cautare binara Scor 0
Compilator cpp-64 Status done
Runda Arhiva educationala Marime 1.26 kb
#include<bits/stdc++.h>
using namespace std;
ifstream in("cautbin.in");
ofstream out("cautbin.out");
const int N_MAX = 1e5;
int n;
int v[N_MAX + 2];
int cautbin(int x)
{
    int st,dr,mid,poz;
    st=1;
    dr=n;
    while(st<dr)
    {
        mid=(st+dr)/2;
        if(v[mid]<=x)
         {
             st=mid+1;
             poz=mid;
         }
        else
        {
            dr=mid-1;
        }
    }
    if(v[poz]!=x)
        return -1;
    else
        return poz;
}
int cautbinar(int x)
{
    int st,dr,mid,poz;
    st=1;
    dr=n;
    while(st<=dr)
    {
        mid=(st+dr)/2;
        if(v[mid]<x)
        {
            st=mid+1;
        }
        if(v[mid]>=x)
        {
            dr=mid-1;
            poz=mid;
        }
    }
    return poz;
}
int main()
{
    int x,a,b,i;
    in>>n;
    for(i=1;i<=n;i++)
        in>>v[i];
    in>>x;
    for(i=1;i<=x;i++)
    {
        in>>a>>b;
        if(a==0)
        {
            int c;
            c=cautbin(b);
            if(v[c]==b)
                out<<c<<'\n';
            else
                out<<"-1"<<'\n';
        }
        if(a==1)
            out<<cautbin(b)<<'\n';
        if(a==2)
            out<<cautbinar(b)<<'\n';
    }
    return 0;
}