Pagini recente » Cod sursa (job #554813) | Borderou de evaluare (job #133068) | Borderou de evaluare (job #1183669) | Cod sursa (job #305634) | Cod sursa (job #464787)
Cod sursa(job #464787)
#include<fstream>
using namespace std;
int cautbin(int a[],int n,int x)
{
int st=1,dr=n,med;
while(st<=dr)
{
med=(st+dr)/2;
if(a[med]==x)
return med;
else
if(a[med]>x)
dr=med-1;
else
st=med+1;
}
return med;
}
int main()
{
int n,a[100005],m,op,i,bla,x,b;
ifstream fin("cautbin.in");
ofstream fout("cautbin.out");
fin>>n;
for(i=1;i<=n;i++)
fin>>a[i];
fin>>m;
for(bla=1;bla<=m;bla++)
{
fin>>op>>x;
b=cautbin(a,n,x);
switch(op)
{
case 0:
if(a[b]==x)
{
while(a[b]==x)
b++;
fout<<b-1<<endl;
}
else
fout<<"-1"<<endl;
break;
case 1:
while(a[b]<=x)
b++;
fout<<b-1<<endl;
break;
case 2:
while(a[b]>=x)
b--;
fout<<b+1<<endl;
break;
}
}
}