Cod sursa(job #2443619)

Utilizator TherevengerkingSurani Adrian Therevengerking Data 28 iulie 2019 20:43:29
Problema Cautare binara Scor 100
Compilator cpp-64 Status done
Runda Arhiva educationala Marime 1.13 kb
#include <bits/stdc++.h>

using namespace std;
ifstream fin("cautbin.in");
ofstream fout("cautbin.out");
const int Nmax = 100000 + 5;
int a[Nmax], n, m;

int main()
{
    fin >> n;
    for(int i = 1; i <= n; ++i)fin >> a[i];

    fin >> m;
    for(int i = 1, vr, x, st, dr, sol; i <= m; ++i)
    {
        st = 1, dr = n, sol = -1;
        fin >> vr >> x;
        if(vr == 0)
        {
            while(st <= dr)
            {
                int mid = st + (dr - st) / 2;

                if(x < a[mid])dr = mid - 1;
                else if(x > a[mid])st = mid + 1;
                else sol = mid, st = mid + 1;
            }
        }
        else if(vr == 1)
        {
            while(st <= dr)
            {
                int mid = st + (dr - st) / 2;

                if(x >= a[mid])st = mid + 1, sol = mid;
                else dr = mid - 1;
            }
        }
        else
        {
            while(st <= dr)
            {
                int mid = st + (dr - st) / 2;

                if(x <= a[mid])dr = mid - 1, sol = mid;
                else st = mid + 1;
            }
        }
        fout << sol << '\n';
    }

    return 0;
}