Pagini recente » Cod sursa (job #1527366) | Cod sursa (job #1288474) | Cod sursa (job #1668670) | Cod sursa (job #1808723) | Cod sursa (job #2860941)
#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 << endl;
}
}
int main() {
citire();
afisare();
return 0;
}