Pagini recente » Cod sursa (job #1675935) | Cod sursa (job #286865) | Cod sursa (job #2122220) | Cod sursa (job #1668602) | Cod sursa (job #1470511)
#include<iostream>
#include<fstream>
#define inf (1 << 32)-1
using namespace std;
unsigned v[100005], n;
int a(int x) {
int lo, hi, mid;
lo = 0;
hi = n + 1;
while (hi - lo > 1) {
mid = (hi + lo) / 2;
if (v[mid] > x)
hi = mid;
else
lo = mid;
}
return lo;
}
int b(int x) {
int lo, hi, mid;
lo = 0;
hi = n + 1;
while (hi - lo > 1) {
mid = (hi + lo) / 2;
if (v[mid] >= x)
hi = mid;
else
lo = mid;
}
return hi;
}
int main() {
ifstream f("cautbin.in");
ofstream g("cautbin.out");
int m, i, x, y;
f >> n;
v[0] = 0;
v[n + 1] = inf;
for (i = 1; i <= n; ++i)
f >> v[i];
f >> m;
for (i = 0; i < m; ++i) {
f >> x >> y;
if (x == 0) {
x = a(y);
if (v[x] == y)
g << x << "\n";
else
g << "-1\n";
}
else if (x == 1) {
g << a(y) << "\n";
}
else {
g<< b(y) << "\n";
}
}
return 0;
}