Pagini recente » Cod sursa (job #889769) | Cod sursa (job #1139331) | Cod sursa (job #2225091) | Cod sursa (job #2854392) | Cod sursa (job #2702261)
#include <fstream>
#include <vector>
using namespace std;
vector<int> a;
int cb0(int x) {
int st, dr, m;
st = 0, dr = a.size() - 1;
while (st <= dr) {
m = (st + dr) / 2;
if (a[m] <= x)
st = m + 1;
else dr = m - 1;
}
if (a[dr] == x)
return dr;
else
return -1;
}
int cb1(int x) {
int st, dr, m;
st = 0, dr = a.size() - 1;
while (st <= dr) {
m = (st + dr) / 2;
if (a[m] <= x)
st = m + 1;
else dr = m - 1;
}
return dr;
}
int cb2(int x) {
int st, dr, m;
st = 0, dr = a.size() - 1;
while (st <= dr) {
m = (st + dr) / 2;
if (a[m] >= x)
dr = m - 1;
else st = m + 1;
}
return st;
}
int main() {
int i, n, x, m, op;
ifstream f("cautbin.in");
f >> n;
for (i = 1; i <= n; i++) {
f >> x;
a.push_back(x);
}
f >> m;
ofstream g("cautbin.out");
for (i = 1; i <= m; i++) {
f >> op >> x;
if (op == 0) {
x = cb0(x);
if (x == -1)
g << x << '\n';
else g << x + 1 << '\n';
}
else if (op == 1)
g << cb1(x) + 1 << '\n';
else g << cb2(x) + 1 << '\n';
}
g.close();
f.close();
return 0;
}