Cod sursa(job #2803495)

Utilizator brianabucur11Briana Bucur brianabucur11 Data 20 noiembrie 2021 09:06:27
Problema Cautare binara Scor 0
Compilator cpp-64 Status done
Runda Arhiva educationala Marime 1.29 kb
#include <bits/stdc++.h>

using namespace std;

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

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

int a0 (int v[], int n, int x)
{
    int st=1, dr=n, m;
    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;
    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;
    while (st<=dr)
    {
        m=(st+dr)/2;
        if (v[m]>=x)
        {
            poz=m;
            dr=m-1;
        }
        else
            st=m+1;
    }
    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;
}