Pagini recente » Cod sursa (job #1295368) | Cod sursa (job #2080046) | Cod sursa (job #1785121) | Profil ralukutza_k_2oo7 | Cod sursa (job #2035255)
#include<bits/stdc++.h>
using namespace std;
int n, a[100001];
int Search(int l, int r, int v)
{
int m, poz = -1;
while (l <= r)
{
m = (l + r) / 2;
if (a[m] <= v)
l = m + 1;
else
r = m - 1;
if (a[m] == v)
poz = m;
}
return poz;
}
int Search1(int l, int r, int v)
{
int m, poz = -1;
while (l <= r)
{
m = (l + r) / 2;
if (a[m] <= v)
{
l = m + 1;
poz = m;
}
else
r = m - 1;
}
return poz;
}
int Search2(int l, int r, int v)
{
int m, poz = -1;
while (l <= r)
{
m = (l + r) / 2;
if (a[m] >= v)
{
r = m - 1;
poz = m;
}
else
l = m + 1;
}
return poz;
}
int main()
{
ifstream fin("cautbin.in");
ofstream fout("cautbin.out");
int m, x, val;
fin >> n;
for(int i = 1; i <= n; ++i)
fin >> a[i];
fin >> m;
for(int i = 1; i <= m; ++i)
{
fin >> x >> val;
if(!x)
fout << Search(1, n, val) << '\n';
if(x == 1)
fout << Search1(1, n, val) << '\n';
if(x == 2)
fout << Search2(1, n, val) << '\n';
}
return 0;
}