Cod sursa(job #1463902)

Utilizator mihaiadelinamihai adelina mihaiadelina Data 21 iulie 2015 19:44:16
Problema Cautare binara Scor 10
Compilator cpp Status done
Runda Arhiva educationala Marime 1.64 kb
#include <fstream>
using namespace std;
ifstream fin ("cautbin.in");
ofstream fout ("cautbin.out");
int v[100001], stanga, dreapta, i, N, M, x, t;
int main() {
    int mijloc;
    fin >> N;

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

    fin >> M;

    for (i = 1; i <= M; i++) {
        fin >> t >> x;
        if (t == 0) {
            stanga = 1;
            dreapta = N;
            while (stanga <= dreapta) {
                mijloc = (stanga + dreapta) / 2;
                if (v[mijloc] <= x) {
                    stanga = mijloc + 1;
                }
                else {
                    dreapta = stanga - 1;
                }
            }
            if (v[dreapta] == x){
                fout << dreapta;
            }
            else {
                fout << -1;
            }
            fout << "\n";

        }

        if (t == 1) {
            stanga = 1;
            dreapta = N;
            while (stanga <= dreapta) {
                mijloc = (stanga + dreapta) / 2;
                if (v[mijloc] <= x) {
                    stanga = mijloc + 1;
                }
                else {
                    dreapta = mijloc - 1;
                }
            }
            fout << dreapta<< "\n";
        }

        if (t == 2) {
            stanga = 1;
            dreapta = N;
            while (stanga <= dreapta) {
                mijloc = (stanga + dreapta) / 2;
                if (v[mijloc] < x) {
                    stanga = mijloc + 1;
                }
                else {
                    dreapta = mijloc - 1;
                }
            }
            fout << stanga << "\n";
        }
    }
    return 0;
}