Pagini recente » Cod sursa (job #2725481) | Cod sursa (job #2156524) | Cod sursa (job #178073) | Cod sursa (job #801489) | Cod sursa (job #2376435)
#include <fstream>
using namespace std;
ifstream fin("cautbin.in");
ofstream fout("cautbin.out");
int n, x, v[100002], m, q;
int rezolva0(int p, int u, int x)
{
int mij, sol=0;
while(p <= u)
{
mij = (p + u) / 2;
if(v[mij] <= x)
{
sol = mij;
p = mij + 1;
}
else
u = mij - 1;
}
if(v[sol] == x)
return sol;
return -1;
}
int rezolva1(int p, int u, int x)
{
int mij, sol = 0;
while(p <= u)
{
mij = (p + u) / 2;
if(v[mij] <= x)
{
sol = mij;
p = mij + 1;
}
else
u = mij - 1;
}
return sol;
}
int rezolva2(int p, int u, int x)
{
int mij, sol = 0;
while(p <= u)
{
mij = (p + u) / 2;
if(v[mij] < x)
p = mij + 1;
else
{
u = mij - 1;
sol = mij;
}
}
return sol;
}
int main()
{
fin >> n;
for(int i = 1; i <= n; ++ i)
fin >> v[i];
fin >> m;
while(m --)
{
fin >> q >> x;
if(q == 0)
fout << rezolva0(1, n, x) << '\n';
if(q == 1)
fout << rezolva1(1, n, x) << '\n';
if(q == 2)
fout << rezolva2(1, n, x) << '\n';
}
return 0;
}