Pagini recente » Cod sursa (job #1717518) | Cod sursa (job #2100253) | Cod sursa (job #1666612) | Cod sursa (job #1023068) | Cod sursa (job #1415843)
#include <fstream>
#define NM 100005
using namespace std;
ifstream fin("cautbin.in");
ofstream fout("cautbin.out");
int n, i, m, v[NM], op, x;
int cautbin0(int x)
{
int be=1;
int en=n;
int ans;
int mid;
while (be<=en)
{
mid=(be+en) / 2;
if (v[mid]<=x)
{
ans=mid;
be=mid+1;
}
else
en=mid-1;
}
if (v[ans]==x)
return ans;
else
return -1;
}
int cautbin1(int x)
{
int be=1;
int en=n;
int ans;
int mid;
while (be<=en)
{
mid=(be+en) / 2;
if (v[mid]<=x)
{
ans=mid;
be=mid+1;
}
else
en=mid-1;
}
return ans;
}
int cautbin2(int x)
{
int be=1;
int en=n;
int ans;
int mid;
while (be<=en)
{
mid=(be+en) / 2;
if (v[mid]>=x)
{
ans=mid;
en=mid-1;
}
else
be=mid+1;
}
return ans;
}
int main()
{
fin >> n;
for (i=1; i<=n; i++)
fin >> v[i];
fin >> m;
for (i=1; i<=m; i++)
{
fin >> op >> x;
if (op==0)
fout << cautbin0(x) << '\n';
if (op==1)
fout << cautbin1(x) << '\n';
if (op==2)
fout << cautbin2(x) << '\n';
}
fin.close();
fout.close();
return 0;
}