Cod sursa(job #3245079)

Utilizator Iancu007Sandea Iancu-Ioan Iancu007 Data 27 septembrie 2024 14:14:58
Problema Cautare binara Scor 0
Compilator cpp-64 Status done
Runda Arhiva educationala Marime 1.11 kb
#include <fstream>

using namespace std;
ifstream cin("cautbin.in");
ofstream cout("cautbin.out");
int v[100005];
int cer0(int x, int st, int dr)
{
    if (st==dr)
        if (v[st]==x)
            return st;
        else
            return -1;
    int mid=(st+dr)/2+1;
    if (v[mid]<=x)
        return cer0(x,mid,dr);
    return cer0(x,st,mid-1);
}
int cer1(int x, int st, int dr)
{
    if (st==dr)
        return st;
    int mid=(st+dr)/2+1;
    if (v[mid]<=x)
        return cer1(x,mid,dr);
    return cer1(x,st,mid-1);
}
int cer2(int x, int st, int dr)
{
    if (st==dr)
        return st;
    int mid=(st+dr)/2+1;
    if (v[mid-1]>=x)
        return cer1(x,st,mid-1);
    return cer1(x,mid,dr);
}
int main()
{
    int n, m;
    cin>>n;
    for (int i=1; i<=n; i++)
        cin>>v[i];
    cin>>m;
    int c, x;
    for (int i=1; i<=m; i++)
    {
        cin>>c>>x;
        if (c==0)
            cout<<cer0(x,1,n)<<'\n';
        else
            if (c==1)
                cout<<cer1(x,1,n)<<'\n';
            else
                cout<<cer2(x,1,n)<<'\n';
    }
    return 0;
}