Pagini recente » Cod sursa (job #1511054) | Cod sursa (job #3188044) | Cod sursa (job #2143729) | Cod sursa (job #287030) | Cod sursa (job #2340481)
#include <fstream>
using namespace std;
ifstream in("cautbin.in");
ofstream out("cautbin.out");
const int MAXN = 1e5;
const int MAXM = 1e5;
int n, m;
int v[MAXN + 1];
int cb(int nr) {
int ret = 0;
int add = 1 << 16;
while (add) {
if (ret + add <= n && v[ret + add] < nr) ret += add;
add >>= 1;
}
return ret;
}
int main() {
in >> n;
for (int i = 1; i <= n; ++ i) in >> v[i];
in >> m;
int t, x, ans;
for (int i = 1; i <= m; ++ i) {
in >> t >> x;
if (t == 0) {
ans = cb(x + 1);
if (ans == 0 || v[ans] != x) out << -1 << '\n';
else out << ans << '\n';
}
if (t == 1) {
ans = cb(x + 1);
out << ans << '\n';
}
if (t == 2) {
ans = cb(x);
++ ans;
out << ans << '\n';
}
}
return 0;
}