Cod sursa(job #1463858)

Utilizator mihaiadelinamihai adelina mihaiadelina Data 21 iulie 2015 17:08:37
Problema Cautare binara Scor 0
Compilator cpp Status done
Runda Arhiva educationala Marime 1.46 kb
#include <fstream>
using namespace std;
ifstream fin ("cautbin.in");
ofstream fout ("cautbin.out");

int main() {
    int v[100001], mijloc, stanga, dreapta, i, N, M, x, t;
    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;
            }
            if (v[mijloc] < x) {
                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;
}