Pagini recente » Cod sursa (job #1528794) | Cod sursa (job #10533) | Cod sursa (job #1692452) | Cod sursa (job #2601058) | Cod sursa (job #441623)
Cod sursa(job #441623)
#include <stdio.h>
using namespace std;
int main()
{
freopen("cautbin.in","r",stdin);
freopen("cautbin.out","w",stdout);
int n,m,i,v[100000],q,x,s,d,r;
scanf("%d",&n);
for(i=0 ; i<n ; i++)
scanf("%d",&v[i]);
scanf("%d",&m);
for(i=0 ; i<m ; i++)
{
scanf("%d%d", &q,&x);
if(q == 0)
{
r = -1;
s = 0;
d = n-1;
while(s < d-1)
{
if(v[(s+d)/2] == x)
{
r = (s+d)/2;
}
if(x >= v[(s+d)/2])
s= (s + d)/2;
else
d= (s + d)/2;
}
printf("%d\n",r+1);
}
if(q == 1)
{
r = -1;
s = 0;
d = n-1;
while(s < d-1)
{
if(v[(s+d)/2] <= x)
{
r = (s+d)/2;
}
if(x>= v[(s+d)/2])
s= (s + d)/2;
else
d= (s + d)/2;
}
printf("%d\n",r+1);
}
if(q == 2)
{
r = -1;
s = 0;
d = n-1;
while(s < d-1)
{
if(v[(s+d)/2] >= x)
{
r = (s+d)/2;
}
if(x <= v[(s+d)/2])
d= (s + d)/2;
else
s= (s + d)/2;
}
printf("%d",r+1);
}
}
return 0;
}