Pagini recente » Cod sursa (job #2842033) | Cod sursa (job #2537690) | Cod sursa (job #1830512) | Cod sursa (job #710983) | Cod sursa (job #1898761)
#include <fstream>
using namespace std;
ifstream fin("cautbin.in");
ofstream fout("cautbin.out");
const int NMAX = 100005;
int V[NMAX], n, m;
int binary_search0(int target) {
int lo = 1, hi = n, mid;
while (lo <= hi) {
mid = lo + (hi - lo) / 2;
if (V[mid] <= target)
lo = mid + 1;
else
hi = mid - 1;
}
mid = lo + (hi - lo) / 2;
if (V[mid] > target)
-- mid;
if (V[mid] == target)
return mid;
return -1;
}
int binary_search1(int target) {
int lo = 1, hi = n, mid;
while (lo < hi) {
mid = lo + (hi - lo) / 2;
if (V[mid] <= target)
lo = mid + 1;
else
hi = mid;
}
mid = lo + (hi - lo) / 2;
if (V[mid] > target)
-- mid;
return mid;
}
int binary_search2(int target) {
int lo = 1, hi = n, mid;
while (lo < hi) {
mid = lo + (hi - lo) / 2;
if (V[mid] < target)
lo = mid + 1;
else
hi = mid;
}
mid = lo + (hi - lo) / 2;
if (V[mid] < target)
++ mid;
return mid;
}
int main() {
fin >> n;
for (int i = 1; i <= n; ++ i)
fin >> V[i];
fin >> m;
for (int i = 1; i <= m; ++ i) {
int type, temp;
fin >> type >> temp;
switch (type) {
case 0:
fout << binary_search0(temp) << "\n";
break;
case 1:
fout << binary_search1(temp) << "\n";
break;
case 2:
fout << binary_search2(temp) << "\n";
break;
}
}
fin.close();
fout.close();
return 0;
}