Cod sursa(job #1329024)

Utilizator okros_alexandruOkros Alexandru okros_alexandru Data 28 ianuarie 2015 23:06:20
Problema Cautare binara Scor 100
Compilator cpp Status done
Runda Arhiva educationala Marime 0.96 kb
#include <fstream>

#define Nmax 100100

using namespace std;

int N, A[Nmax];

int binarySearch(int value) {

    int i, step;

    for(step = 1; step < N; step <<= 1);

    for(i = 0; step != 0; step >>= 1)
        if(i + step <= N && A[i + step] <= value)
            i += step;

    return i;
}
int main() {

    int i, x, type, queries;
    ifstream in("cautbin.in");
    ofstream out("cautbin.out");

    in >> N;
    for(i = 1; i <= N; i++)
        in >> A[i];

    in >> queries;
    while(queries--) {

        in >> type >> x;
        switch(type) {

            case 0:
                i = binarySearch(x);
                out << (A[i] == x ? i : -1);
                break;

            case 1:
                out << binarySearch(x);
                break;

            case 2:
                out << (binarySearch(x - 1) + 1);
        }
        out << '\n';
    }

    in.close();
    out.close();

    return 0;
}