Pagini recente » Cod sursa (job #3148537) | Cod sursa (job #1677674) | Cod sursa (job #1235611) | Cod sursa (job #2585432) | Cod sursa (job #2739320)
#include <iostream>
#include <fstream>
int BinarySearch0(unsigned long* V, int n, unsigned long num) {
int l = 0;
int r = n - 1;
int mid;
int ret = -1;
while (l <= r) {
mid = l + (r - l) / 2;
if (V[mid] > num)
r = mid - 1;
else if (V[mid] < num)
l = mid + 1;
else {
ret = mid;
l = mid + 1;
}
}
return (ret == -1) ? ret : ret + 1;
}
int BinarySearch1(unsigned long* V, int n, unsigned long num) {
int l = 0;
int r = n - 1;
int mid;
int ret;
while (l <= r) {
mid = l + (r - l) / 2;
if (V[mid] > num)
r = mid - 1;
else {
ret = mid;
l = mid + 1;
}
}
return ret + 1;
}
int BinarySearch2(unsigned long* V, int n, unsigned long num) {
int l = 0;
int r = n - 1;
int mid;
int ret;
while (l <= r) {
mid = l + (r - l) / 2;
if (V[mid] < num)
l = mid + 1;
else {
ret = mid;
r = mid - 1;
}
}
return ret + 1;
}
unsigned long V[100000];
int main() {
std::ifstream fin("cautbin.in");
std::ofstream fout("cautbin.out");
int N;
fin >> N;
int i;
for (i = 0; i < N; ++i)
fin >> V[i];
int M;
fin >> M;
int p;
unsigned long x;
for (i = 0; i < M; ++i) {
fin >> p >> x;
if (p == 0)
fout << BinarySearch0(V, N, x) << '\n';
else if (p == 1)
fout << BinarySearch1(V, N, x) << '\n';
else if (p == 2)
fout << BinarySearch2(V, N, x) << '\n';
}
fin.close();
fout.close();
return 0;
}