Pagini recente » Cod sursa (job #118035) | Cod sursa (job #2395589) | Cod sursa (job #1702804) | Cod sursa (job #1550945) | Cod sursa (job #2655946)
#include <iostream>
#include <fstream>
using namespace std;
ifstream in("cautbin.in");
ofstream out("cautbin.out");
int n,m,a[100005];
void c0(int x)
{
int st = 1,dr = n,mid;
while (st <= dr)
{
mid = (st + dr) / 2;
if (a[mid] > x)
dr = mid - 1;
else
st = mid + 1;
}
if(a[dr] == x)
out << dr << '\n';
else
out << -1 << '\n';
}
void c1(int x)
{
int st = 1,dr = n,mid;
while (st <= dr)
{
mid = (st + dr) / 2;
if (a[mid] > x)
dr = mid - 1;
else
st = mid + 1;
}
out << dr << '\n';
}
void c2(int x)
{
int st = 1,dr = n,mid;
while (st <= dr)
{
mid = (st + dr) / 2;
if (a[mid] < x)
st = mid + 1;
else
dr = mid - 1;
}
out << st << '\n';
}
int main()
{
int i,c,x;
in >> n;
for (i = 1; i <= n; i++)
in >> a[i];
in >> m;
for (i = 1; i <= m; i++)
{
in >> c >> x;
if (c == 0)
c0(x);
else if (c == 1)
c1(x);
else
c2(x);
}
return 0;
}