Pagini recente » Cod sursa (job #1834259) | Cod sursa (job #1269429) | Cod sursa (job #3264987) | Cod sursa (job #3247128) | Cod sursa (job #2496840)
#include <iostream>
#include <fstream>
using namespace std;
ifstream fin ("cautbin.in");
ofstream fout ("cautbin.out");
int v[100001];
int n;
int caut_binar (int x)
{
int Left=1, Right=n, Sol=-1, Mid;
while(Left<=Right)
{
Mid=(Left+Right)/2;
if(v[Mid]<=x)
Left=Mid+1;
else
Right=Mid-1;
}
Mid=(Left+Right)/2;
if(v[Mid]>x)
Mid--;
if(v[Mid]==x)
return Mid;
else
return -1;
}
int caut_binar_cea_mai_mare_poz_element_mai_mic_sau_egal_cu_x (int x)
{
int Left=1, Right=n, Sol=-1, Mid;
while(Left<Right)
{
Mid=(Left+Right)/2;
if(v[Mid]<=x)
Left=Mid+1;
else
Right=Mid;
}
Mid=(Left+Right)/2;
if(v[Mid]>x)
Mid--;
return Mid;
}
int caut_binar_cea_mai_mica_poz_element_mai_mare_sau_egal_cu_x (int x)
{
int Left=1, Right=n, Sol=-1, Mid;
while(Left<Right)
{
Mid=(Left+Right)/2;
if(v[Mid]<x)
Left=Mid+1;
else
Right=Mid;
}
if(v[Mid]<x)
Mid++;
return Mid;
}
int main()
{
int m;
fin>>n;
for(int i=1; i<=n; i++)
fin>>v[i];
fin>>m;
for(int i=1; i<=m; i++)
{
short int tip_intrebare;
int nr;
fin>>tip_intrebare>>nr;
if(tip_intrebare==0)
fout<<caut_binar(nr)<<"\n";
else
if(tip_intrebare==1)
fout<<caut_binar_cea_mai_mare_poz_element_mai_mic_sau_egal_cu_x(nr)<<"\n";
else
fout<<caut_binar_cea_mai_mica_poz_element_mai_mare_sau_egal_cu_x(nr)<<"\n";
}
return 0;
}