Cod sursa(job #2444813)

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

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

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