Cod sursa(job #2328768)

Utilizator ililogIlinca ililog Data 26 ianuarie 2019 10:36:01
Problema Cautare binara Scor 0
Compilator cpp-64 Status done
Runda Arhiva educationala Marime 1.8 kb
using namespace std;
#include<iostream>
#include<fstream>
#include<algorithm>

int main() {

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

    int n;
    int nrIntrebari;

    fin >> n;

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

    sort (v+1, v+n+1);

    fin >> nrIntrebari;

    for (int i = 1; i<=nrIntrebari; i++) {
        int intrebare;
        int x;

        fin >> intrebare;
        fin >> x;

        int dr = n;
        int st = 1;

        if (intrebare == 0) {
            int ultpoz = -1;

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

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

            fout << ultpoz << endl;

        } else if (intrebare == 1) {
            int ultpoz = -1;

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

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

            fout << ultpoz << endl;
        } else if (intrebare == 2) {
            int ultpoz = -1;

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

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

            fout << ultpoz;

        }
    }





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

    return 0;
}