Cod sursa(job #2801193)

Utilizator brianabucurBucur Briana brianabucur Data 15 noiembrie 2021 14:29:46
Problema Cautare binara Scor 0
Compilator cpp-64 Status done
Runda Arhiva educationala Marime 1.31 kb
#include <bits/stdc++.h>

using namespace std;

ifstream fin ("cautbin.in");
ofstream fout ("cautbin.out");

int v[100000], n, m, a, x, i;

int a0 (int v[], int n, int x)
{
    int st=1, dr=n, m, poz, i;
    while (st<=dr)
    {
        m=(st+dr)/2;
        if (v[m]<=x)
        {
            if (v[m]==x) poz=m;
            st=m+1;
        }
        else dr=m-1;
    }
    if (poz==0) return -1;
    return poz;
}

int a1 (int v[], int n, int x)
{
    int st=1, dr=n, m, poz, i;
    m=(st+dr)/2;
    while (st<=dr)
    {
        m=(st+dr)/2;
        if (v[m]<=x)
        {
            poz=m;
            st=m+1;
        }
        else dr=m-1;
    }
    return poz;
}

int a2 (int v[], int n, int x)
{
    int st=1, dr=n, m, poz, i;
    m=(st+dr)/2;
    while (st<=dr)
    {
        if (v[m]>=x)
        {
            poz=m;
            dr=m-1;
        }
        else st=m+1;
        m=(st+dr)/2;
    }
    return poz;
}

int main()
{
    fin >> n;
    for (i=1; i<=n; i++)
        fin >> v[i];
    fin >> m;
    for (i=1; i<=m; i++)
    {
        fin >> a >> x;
        if (a==0)
            fout << a0(v, n, x) << '\n';
        if (a==1)
            fout << a1(v, n, x) << '\n';
        if (a==2)
            fout << a2(v, n, x) << '\n';
    }
    return 0;
}