Cod sursa(job #2459137)

Utilizator ililogIlinca ililog Data 22 septembrie 2019 11:19:56
Problema Cautare binara Scor 40
Compilator cpp-64 Status done
Runda Arhiva educationala Marime 1.77 kb
using namespace std;
#include<iostream>
#include<fstream>

int n, m, v[100001], x;
short int intr;

int main() {

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

    fin >> n;

    for (int i = 1; i<=n; i++) {
        fin >> v[i];
    }

    fin >> m;

    for (int nrintrebare = 1; nrintrebare<=m; nrintrebare++) {
        fin >> intr >> x;

        int valpoz = 0;

        if (intr == 0) {

            int st = 1, dr = n;

            while (st<=dr) {
                int mid = (st+dr)/2;

                if (v[mid] < x) {
                    st = mid+1;
                } else if (v[mid] > x) {
                    dr = mid-1;
                } else {
                    valpoz = mid;
                    st = mid+1;
                }
            }

            if (valpoz == 0) {
                fout << "-1" << endl;
            } else {
                fout << valpoz << endl;
            }

        }

        if (intr == 1) {
            int st = 1, dr = n;

            while (st <= dr) {
                int mid = (st+dr)/2;

                if (v[mid] > x) {
                    dr = mid-1;
                } else {
                    valpoz = mid;
                    st = mid+1;
                }
            }

            fout << valpoz << endl;
        }

        if (intr == 2) {
            int st = 1, dr = n;

            while (st<=dr) {
                int mid = (st+dr)/2;

                if (v[mid] < x) {
                    st = mid+1;
                } else {
                    valpoz = mid;
                    dr = mid-1;
                }
            }

            fout << valpoz << endl;
        }

    }


    fin.close();
    fout.close();

    return 0;
}