Pagini recente » Cod sursa (job #1373523) | Cod sursa (job #3031122) | Cod sursa (job #1892559) | Cod sursa (job #1983678) | Cod sursa (job #1950505)
#include <iostream>
#include <fstream>
using namespace std;
int n;
int Cautare_binara(int v[],int x, int stanga, int dreapta)
{
if (stanga > dreapta) return dreapta+1;
else
{
int mijloc = (dreapta+stanga) / 2;
if (x == v[mijloc]) return mijloc;
if (x > v[mijloc]) Cautare_binara(v,x,mijloc+1,dreapta);
else Cautare_binara(v,x,stanga,mijloc-1);
}
}
int main()
{
ifstream in("cautbin.in");
ofstream out("cautbin.out");
int m,i;
in >> n; int v[n+1];
for (i=1;i<=n;i++) in >> v[i];
in >> m;
int q, x;
int indice_curent;
while (m>0)
{
in >> q >> x;
indice_curent = Cautare_binara(v,x,1,n);
switch(q)
{
case 0:
{
if (v[indice_curent] != x) out << "-1" << '\n';
else
{
while (v[indice_curent] == x) indice_curent++;
out << --indice_curent << '\n';
}
break;
}
case 1:
{
while (v[indice_curent] == x) indice_curent++;
out << --indice_curent << '\n';
break;
}
case 2:
{
while (v[indice_curent] == x) indice_curent--;
if (v[indice_curent+1] == x) out << ++indice_curent << '\n';
else out << indice_curent << '\n';
break;
}
}
m--;
}
return 0;
}