Pagini recente » Cod sursa (job #2820228) | Cod sursa (job #2752114) | Cod sursa (job #593563) | Cod sursa (job #500675) | Cod sursa (job #3237957)
#include <fstream>
using namespace std;
ifstream fin("cautbinar.in");
ofstream fout("cautbinar.out");
const unsigned N = 1e5;
unsigned a[N], n;
inline unsigned cb0( unsigned n, unsigned x) {
unsigned st = 0;
unsigned dr = n - 1;
unsigned rez = -1;
while (st <= dr) {
unsigned mij = (st + dr) / 2;
if (a[mij] <= x) {
rez = mij;
st = mij + 1;
} else {
dr = mij - 1;
}
}
if (rez == -1 || a[rez] != x)
return -1;
else
return rez + 1;
}
inline unsigned cb2(unsigned n, unsigned x) {
unsigned st = 0;
unsigned dr = n - 1;
unsigned rez = -1;
while (st <= dr) {
unsigned mij = (st + dr) / 2;
if (a[mij] >= x) {
rez = mij;
dr = mij - 1;
} else
st = mij + 1;
}
if (rez == -1 || a[rez] != x) {
return -1;
} else {
return rez + 1;
}
}
int main() {
unsigned n;
fin >> n;
for (unsigned i = 0; i < n; ++i) {
fin >> a[i];
}
unsigned q;
fin >> q;
short cerr;
unsigned x;
while (q--) {
fin >> cerr >> x;
if (cerr == 0 || cerr == 1) {
fout << cb0(n, x) << '\n';
} else {
fout << cb2(n, x) << '\n';
}
}
}