Pagini recente » Cod sursa (job #1016628) | Cod sursa (job #1097051) | Cod sursa (job #1149185) | Cod sursa (job #448172) | Cod sursa (job #1101622)
#include<fstream>
#define N 100005
using namespace std;
ifstream f("cautbin.in");
ofstream g("cautbin.out");
int A[N];
int n, m;
int BinarySearch2(int x)
{
int lf = 1;
int rt = n;
while (rt - lf > 1)
{
int mid = (lf + rt) / 2;
if (x > A[mid])
{
lf = mid + 1;
}
else
{
rt = mid;
}
}
if (A[lf] >= x) return lf;
if (A[rt] >= x) return rt;
return -1;
}
int BinarySearch1(int x)
{
int lf = 1;
int rt = n;
while (rt - lf > 1)
{
int mid = (lf + rt) / 2;
if (x < A[mid])
{
rt = mid - 1;
}
else
{
lf = mid;
}
}
if (A[rt] <= x) return rt;
if (A[lf] <= x) return lf;
return -1;
}
int BinarySearch0(int x)
{
int lf = 1;
int rt = n;
while (rt - lf > 1)
{
int mid = (lf + rt) / 2;
if (x < A[mid])
{
rt = mid - 1;
}
else
{
lf = mid;
}
}
if (A[rt] == x) return rt;
if (A[lf] == x) return lf;
return -1;
}
int main()
{
f >> n;
for(int i = 1; i <= n; i++)
{
f >> A[i];
}
f >> m;
for(int i = 1; i <= m; i++)
{
int codop, x;
f >> codop >> x;
if (codop == 0)
{
g << BinarySearch0(x) << "\n";
}
if (codop == 1)
{
g << BinarySearch1(x) << "\n";
}
if (codop == 2)
{
g << BinarySearch2(x) << "\n";
}
}
}