Pagini recente » Borderou de evaluare (job #2909062) | Borderou de evaluare (job #1773613) | Borderou de evaluare (job #3237334) | Borderou de evaluare (job #2068308) | Cod sursa (job #2540497)
#include <fstream>
using namespace std;
ifstream in("cautbin.in");
ofstream out("cautbin.out");
int v[100001],n;
int cerinta1(int x)
{
int med,ans,st,dr;
st=0;
dr=n-1;
while(st<=dr){
med=(st+dr)/2;
if(v[med]<=x)
{
ans=med;
st=med+1;
}
else
{
dr=med-1;
}
}
return ans;
}
int cerinta2(int x)
{
int dr,st,med,ans;
st=0;
dr=n-1;
while(st<=dr)
{
med=(st+dr)/2;
if(v[med]>=x)
{
ans=med;
dr=med-1;
}
else
{
st=med+1;
}
}
return ans;
}
int main()
{
int x,m,i,prop,a;
in>>n;
for(i=0;i<n;i++)
{
in>>v[i];
}
in>>m;
for(int p=1;p<=m;p++)
{
in>>prop>>x;
if(prop==1)
{
out<<cerinta1(x)+1<<'\n';
}
else if(prop==0)
{
a=cerinta1(x);
if(v[a]==x)
out<<a+1<<'\n';
else
out<<-1<<'\n';
}else if(prop==2)
{
out<<cerinta2(x)+1<<'\n';
}
}
return 0;
}