Pagini recente » Cod sursa (job #739921) | Cod sursa (job #2434458) | Cod sursa (job #1100) | Cod sursa (job #949057) | Cod sursa (job #2638996)
#include <iostream>
#include <fstream>
using namespace std;
//Se dă un vector x cu n elemente numere naturale, ordonate crescător,
//și un vector y cu m elemente, de asemenea numere naturale. Verificați pentru fiecare element al vectorului y dacă apare în x
int a[100001];
int cautareBinaraRecursiva(int st, int dr, int val) {
if (st == dr) return st;
int mijloc = (st + dr) / 2;
if (a[mijloc + 1] <= val) {
return cautareBinaraRecursiva(mijloc + 1, dr, val);
} else {
return cautareBinaraRecursiva(st, mijloc, val);
}
}
int cautarebinara(int val, int n){
return cautareBinaraRecursiva(0, n, val);
}
int main() {
int tip, N, M, x;
ifstream f("cautbin.in");
ofstream g("cautbin.out");
f >> N;
for (int i = 1; i <= N; i++)
f >> a[i];
f >> M;
for (int i = 1; i <= M; i++) {
f >> tip >> x;
if (tip == 0) {
int poz;
poz = cautarebinara(x, N);
if (a[poz] == x)
g << poz << '\n';
else
g << "-1" << '\n';
}
if (tip == 1) {
g << cautarebinara(x, N) << '\n';
}
if (tip == 2) {
g << cautarebinara(x - 1, N) + 1 << '\n';
}
}
f.close();
return 0;
}