Cod sursa(job #1798593)

Utilizator BlackLordFMI Alex Oprea BlackLord Data 5 noiembrie 2016 12:16:50
Problema Cautare binara Scor 100
Compilator cpp Status done
Runda Arhiva educationala Marime 1.48 kb
#include <fstream>

using namespace std;

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

const int N = 100010;

int n, t, i, j, v[N], T, mij, x, st, dr, ok;

int main() {
    fin >> n;
    for (i = 1; i <= n; ++i) {
        fin >> v[i];
    }
    fin >> t;
    for (; t; t--) {
        fin >> T >> x;
        if (T == 0) {
            st = 1;
            dr = n;
            ok =- 1;
            while(st <= dr) {
                mij = (st + dr) >> 1;
                if (v[mij] <= x)
                    st = mij + 1;
                else
                    dr = mij - 1;
            }
            if (v[dr] == x) {
                fout << dr << "\n";
            } else {
                fout << "-1\n";
            }
        } else if (T == 1) {
            st = 1;
            dr = n;
            ok = -1;
            while (st <= dr) {
                mij = (st + dr) >> 1;
                if(v[mij]<=x) {
                    st = mij + 1;
                } else {
                    dr = mij - 1;
                }
            }
            fout << dr << "\n";
        } else {
            st = 1;
            dr = n;
            ok = -1;
            while (st <= dr) {
                mij = (st + dr) >> 1;
                if (v[mij] < x) {
                    st = mij + 1;
                } else {
                    dr = mij - 1;
                }
            }
            fout << st << "\n";
        }
    }
    return 0;
}