Pagini recente » Cod sursa (job #2596825) | Cod sursa (job #2354405) | Cod sursa (job #109) | Cod sursa (job #3159846) | Cod sursa (job #2231876)
#include <fstream>
using namespace std;
ifstream fin("cautbin.in");
ofstream fout("cautbin.out");
int v[100002];
int n, m;
int caut2(int x)
{
int stanga = 1, dreapta = n, rasp = -1, mijloc;
while(stanga <= dreapta)
{
mijloc = (stanga + dreapta) / 2;
if(v[mijloc] >= x)
{
rasp = mijloc;
dreapta = mijloc - 1;
}
else
stanga = mijloc + 1;
}
return rasp;
}
int caut1(int x)
{
int stanga = 1, dreapta = n, rasp = -1, mijloc;
while(stanga <= dreapta)
{
mijloc = (stanga + dreapta) / 2;
if(v[mijloc] <= x)
{
rasp = mijloc;
stanga = mijloc + 1;
}
else
dreapta = mijloc - 1;
}
return rasp;
}
int caut0(int x)
{
int stanga = 1, dreapta = n, rasp = -1, mijloc;
while(stanga <= dreapta)
{
mijloc = (stanga + dreapta) / 2;
if(v[mijloc] <= x)
{
if(v[mijloc]==x)
rasp = mijloc;
stanga = mijloc + 1;
}
else
dreapta = mijloc - 1;
}
return rasp;
}
int main()
{
fin >> n;
for(int i = 1; i <= n; i++)
fin >> v[i];
fin >> m;
for(int i = 1; i <= m; i++)
{
int a, b;
fin >> a >> b;
if(a == 0)
fout << caut0(b) << '\n';
if( a == 1)
fout << caut1(b) << '\n';
if( a == 2)
fout << caut2(b) << '\n';
}
return 0;
}