Cod sursa(job #3215653)

Utilizator lorenazLorena Zavelca lorenaz Data 15 martie 2024 11:15:45
Problema Cautare binara Scor 0
Compilator cpp-64 Status done
Runda Arhiva educationala Marime 1.35 kb
#include <iostream>
#include <fstream>
using namespace std;
ifstream fin ("cautbin.in");
ofstream fout ("cautbin.out");

int a[100000];
int bin(int v[],int val, int n)
{
    int ans = 0, st = 1, dr = n, med = 0;
    while (st <= dr)
    {
        med = (st + dr)/2;
        if (v[med] <= val)
        {
           st = med + 1;
           ans = med;
        }
        else
           dr = med - 1;
    }
    return ans;
}

int main()
{
    int n;
    cin >> n;
    for (int i = 1; i <= n; i++)
    {
        cin >> a[i];
    }
    int m;
    cin >> m;
    for (int i = 1; i <= m; i++)
    {
        int task, x;
        cin >> task >> x;
        int poz = bin(a, x, n);
        if (task == 0)
        {
            if (a[poz] == x)
                cout << poz;
            else
                cout << "-1";
        }
        if (task == 1)
        {
            int maxx = -1;
            for (int f = 1; f <= n; f++)
            {
                if (a[f] <= x)
                   maxx = max (maxx, f);
            }
            cout << maxx;
        }
        if (task == 2)
        {
            int minn = n;
            for (int f = 1; f <= n; f++)
            {
                if (a[f] >= x)
                   minn = min (minn, f);
            }
            cout << minn;
        }
    }
    return 0;
}