Cod sursa(job #2119766)

Utilizator radugheoRadu Mihai Gheorghe radugheo Data 1 februarie 2018 17:02:59
Problema Cautare binara Scor 100
Compilator cpp Status done
Runda Arhiva educationala Marime 1.38 kb
#include <fstream>

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

int n, i, m, cerinta, x, st, dr, mid;
int v[100001];
int main()
{
    fin >> n;
    for (i=1; i<=n; i++){
        fin >> v[i];
    }
    fin >> m;
    for (i=1; i<=m; i++) {
        fin >> cerinta >> x;
        if (cerinta == 0) {
            st = 1;
            dr = n;
            while (st <= dr) {
                int mid = (st + dr)/2;
                if (v[mid] <= x)
                    st = mid + 1;
                else
                    dr = mid - 1;
            }
            if (v[dr] == x)
                fout << dr << "\n";
            else
                fout << "-1\n";
        }
        if (cerinta == 1) {
            st = 1;
            dr = n;
            while (st <= dr) {
                int mid = (st + dr)/2;
                if (v[mid] <= x)
                    st = mid + 1;
                else
                    dr = mid - 1;
            }

            fout << dr << "\n";
        }
        if (cerinta == 2) {
            st = 1;
            dr = n;
            while (st <= dr) {
                int mid = (st + dr)/2;
                if (v[mid] < x)
                    st = mid + 1;
                else
                    dr = mid - 1;
            }

            fout << st << "\n";
        }
    }
    return 0;
}