Cod sursa(job #2444841)

Utilizator CostiVVoicu Costi CostiV Data 1 august 2019 16:38:14
Problema Cautare binara Scor 40
Compilator cpp-64 Status done
Runda Arhiva educationala Marime 1.41 kb
#include <fstream>
using namespace std;

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

    int N;
    fin >> N;
    int i, a[100001];
    for (i = 1; i <= N; ++i)
        fin >> a[i];
    int M;
    fin >> M;
    for (i = 1; i <= M; ++i){
        int intrebare, x;
        fin >> intrebare >> x;
        int left = 1, right = N + 1, mid = 0;
        if (intrebare == 0){
            right = N;
            while (left <= right){
                mid = (left + right) / 2;
                    if (a[mid] > x)
                        right = mid - 1;
                    else
                        left = mid + 1;
            }
            if (a[right] == x)
                fout << right << endl;
            else
                fout << "-1" << endl;
        }
        if (intrebare == 1){
            while (left < right){
                mid = (left + right) / 2;
                if (a[mid] <= x)
                    left = mid + 1;
                else
                    right = mid;
            }
            fout << left - 1 << endl;
        }
        if (intrebare == 2){
            while (left < right){
                mid = (left + right) / 2;
                if (a[mid] < x)
                    left = mid + 1;
                else
                    right = mid;
            }
            fout << left << endl;
        }
    }
    return 0;
}