Pagini recente » Cod sursa (job #3181571) | Cod sursa (job #1113926) | Cod sursa (job #2710245) | Cod sursa (job #2717634) | Cod sursa (job #196570)
Cod sursa(job #196570)
// http://infoarena.ro/problema/cautbin
#include <fstream>
#include <vector>
using namespace std;
const int NMAX = 100005;
int n, m;
int A[NMAX], Ans[3];
int binarySearch(int type, int what) {
int lo, hi, mid;
Ans[0] = Ans[1] = Ans[2] = -1;
for (lo = 0, hi = n - 1; lo <= hi; ) {
mid = lo + (hi - lo) / 2;
if (A[mid] < what) {
Ans[1] = mid;
lo = mid + 1;
} else if (A[mid] > what) {
Ans[2] = mid;
hi = mid - 1;
} else {
Ans[0] = Ans[1] = Ans[2] = mid;
break;
}
}
return Ans[type];
}
int main() {
ifstream in("cautbin.in");
ofstream out("cautbin.out");
in >> n;
int i;
for (i = 0; i < n; ++ i)
in >> A[i];
int type, what, ans;
in >> m;
for (i = 0; i < m; ++ i) {
in >> type >> what;
ans = binarySearch(type, what);
if (ans == -1)
out << "-1\n";
else
out << ans + 1 << endl;
}
return 0;
}