Pagini recente » Cod sursa (job #911436) | Cod sursa (job #32332) | Cod sursa (job #347303) | Cod sursa (job #2944243) | Cod sursa (job #3215653)
#include <iostream>
#include <fstream>
using namespace std;
ifstream fin ("cautbin.in");
ofstream fout ("cautbin.out");
int a[100000];
int bin(int v[],int val, int n)
{
int ans = 0, st = 1, dr = n, med = 0;
while (st <= dr)
{
med = (st + dr)/2;
if (v[med] <= val)
{
st = med + 1;
ans = med;
}
else
dr = med - 1;
}
return ans;
}
int main()
{
int n;
cin >> n;
for (int i = 1; i <= n; i++)
{
cin >> a[i];
}
int m;
cin >> m;
for (int i = 1; i <= m; i++)
{
int task, x;
cin >> task >> x;
int poz = bin(a, x, n);
if (task == 0)
{
if (a[poz] == x)
cout << poz;
else
cout << "-1";
}
if (task == 1)
{
int maxx = -1;
for (int f = 1; f <= n; f++)
{
if (a[f] <= x)
maxx = max (maxx, f);
}
cout << maxx;
}
if (task == 2)
{
int minn = n;
for (int f = 1; f <= n; f++)
{
if (a[f] >= x)
minn = min (minn, f);
}
cout << minn;
}
}
return 0;
}