Pagini recente » Cod sursa (job #2639237) | Cod sursa (job #2818015) | Cod sursa (job #1535904) | Cod sursa (job #1398398) | Cod sursa (job #502354)
Cod sursa(job #502354)
#include<stdio.h> //este copiata de la "pop claudia clauditza"
long n,i,m,f,x,last;
long v[100005];
int bs(long val)
{
int st,dr,med;
st=1;
dr=n;
last=-1;
while(st<=dr)
{
med=st+(dr-st)/2;
if(v[med]<=val)
{
last=med;
st=med+1;
}
else
dr=med-1;
}
return last; //este copiata de la "pop claudia clauditza"
}
int bs1(long val)
{
int st,dr,med;
st=1;
dr=n;
while(st<=dr)
{
med=st+(dr-st)/2;
if(val>=v[med])
{
last=med;
st=med+1;
}
else
dr=med-1;
}
return last;
}
int bs2(long val)
{
int st,dr,med;
st=1;
dr=n;
while(st<=dr)
{ //este copiata de la "pop claudia clauditza"
med=st+(dr-st)/2;
if(val<=v[med])
{
last=med;
dr=med-1;
}
else
st=med+1;
}
return last;
}
int main()
{
freopen("cautbin.in","r",stdin);
freopen("cautbin.out","w",stdout);
scanf("%ld",&n);
int nr;
for(i=1;i<=n;++i)
{
scanf("%ld",&v[i]);
}
scanf("%ld",&m);
for(i=1;i<=m;++i)
{
scanf("%ld%ld",&f,&x);
if(f==0) //este copiata de la "pop claudia clauditza"
{
nr=bs(x);
if(v[nr]!=x)
printf("-1\n");
else
printf("%d\n",nr);
}
if(f==1)
{
nr=bs1(x);
printf("%d\n",nr);
}
if(f==2)
{
nr=bs2(x);
printf("%d\n",nr);
}
}
return 0;
} //este copiata de la "pop claudia clauditza"