Pagini recente » Cod sursa (job #1047366) | Cod sursa (job #1897434) | Cod sursa (job #98554) | Cod sursa (job #193973) | Cod sursa (job #2860948)
#include <fstream>
using namespace std;
ifstream cin("cautbin.in");
ofstream cout("cautbin.out");
int n, m, a[100005], x, y, z;
void citire() {
int i;
cin >> n;
for (i = 1; i <= n; i++)
cin >> a[i];
cin >> m;
}
int caz1(int h) {
int dr = n, st = 1, poz = -1;
while (st <= dr) {
int mid = (dr + st) / 2;
if (a[mid] > h)
dr = mid - 1;
else {
if (a[mid] == h) {
poz = mid;
break;
}
st = mid + 1;
}
}
return poz;
}
int caz2(int h) {
int dr = n, st = 1, poz = -1;
while (st <= dr) {
int mid = (dr + st) / 2;
if (a[mid] > h)
dr = mid - 1;
else {
poz = mid;
st = mid + 1;
}
}
return poz;
}
int caz3(int h) {
int dr = n, st = 1, poz = -1;
while (st <= dr) {
int mid = (dr + st) / 2;
if (a[mid] >= h) {
poz = mid;
dr = mid - 1;
} else
st = mid + 1;
}
return poz;
}
void afisare() {
int i = 0;
for (i = 1; i <= m; i++) {
cin >> y >> z;
if (y == 0)
cout << caz1(z);
else if (y == 1)
cout << caz2(z);
else cout << caz3(z);
cout << '\n';
}
}
int main() {
citire();
afisare();
return 0;
}