Pagini recente » Cod sursa (job #1841015) | Cod sursa (job #1331610) | Cod sursa (job #692032) | Cod sursa (job #438581) | Cod sursa (job #2967462)
#include <fstream>
#include <vector>
using namespace std;
ifstream cin("cautbin.in");
ofstream cout("cautbin.out");
int n, a[100001], m, q, xq;
int cb0(int x)
{
int st = 0, dr = n - 1, rez = -1;
while(st <= dr)
{
int mid = (st + dr) / 2;
if(a[mid] <= x)
{
if(a[mid] == x) rez = mid;
st = mid + 1;
}
else dr = mid - 1;
}
return rez;
}
int cb1(int x)
{
int st = 0, dr = n - 1, rez = -1;
while(st <= dr)
{
int mid = (st + dr) / 2;
if(a[mid] <= x)
{
rez = mid;
st = mid + 1;
}
else
{
dr = mid - 1;
}
}
return rez;
}
int cb2(int x)
{
int st = 0, dr = n - 1, rez = - 1;
while(st <= dr)
{
int mid = (st + dr) / 2;
if(a[mid] >= x)
{
rez = mid;
dr = mid - 1;
}
else
{
st = mid + 1;
}
}
return rez;
}
int main()
{
cin >> n;
for(int i = 0; i < n; i++)
{
cin >> a[i];
}
cin >> m;
while(m--)
{
cin >> q >> xq;
if(q == 0) cout << cb0(xq) + 1 << '\n';
else if(q == 1) cout << cb1(xq) + 1 << '\n';
else if(q == 2) cout << cb2(xq) + 1 << '\n';
}
}