Pagini recente » Cod sursa (job #2267602) | Cod sursa (job #2215808) | Cod sursa (job #3171468) | Cod sursa (job #1986141) | Cod sursa (job #2610109)
#include <bits/stdc++.h>
using namespace std;
ifstream fin("cautbin.in");
ofstream fout("cautbin.out");
const int NMAX = 100005;
int sir[NMAX], n, m;
int binary_Search_equal(int num, int st, int dr)
{
int poz = -1;
while(st <= dr)
{
int mid = (st + dr) / 2;
if(sir[mid] > num)
dr = mid - 1;
else
if(sir[mid] < num)
st = mid + 1;
else
{
poz = mid;
st = mid + 1;
}
}
return poz;
}
int binary_Search_min(int num, int st, int dr)
{
int poz = -1;
while(st <= dr)
{
int mid = (st + dr) / 2;
if(sir[mid] < num)
st = mid + 1;
else
{
poz = mid;
dr = mid - 1;
}
}
return poz;
}
int binary_Search_max(int num, int st, int dr)
{
int poz = -1;
while(st <= dr)
{
int mid = (st + dr) / 2;
if(sir[mid] > num)
dr = mid - 1;
else
{
poz = mid;
st = mid + 1;
}
}
return poz;
}
int main()
{
fin >> n;
for(int i = 1; i <= n; i++)
fin >> sir[i];
fin >> m;
int query, num;
for(int i = 0; i < m; i++)
{
fin >> query >> num;
if(query == 0)
fout << binary_Search_equal(num, 1, n) << '\n';
if(query == 1)
fout << binary_Search_max(num, 1, n) << '\n';
if(query == 2)
fout << binary_Search_min(num, 1, n) << '\n';
}
return 0;
}