Pagini recente » Cod sursa (job #553430) | Cod sursa (job #2701472) | Cod sursa (job #1677483) | Cod sursa (job #2865795) | Cod sursa (job #1862770)
#include <stdio.h>
#define maxn 100005
int n,m,i,t,x;
int v[maxn];
int BS(int t,int x)
{
if(t==0 || t==1)
{
int pas=1<<17,r=0;
while(pas!=0)
{
if(pas+r<=n && v[pas+r]<=x)
r+=pas;
pas/=2;
}
if(t==0)
{
if(v[r]==x)
return r;
else return -1;
}
else
return r;
}
else
{
int pas,r;
pas=r=1<<17;
while(pas!=0)
{
if(r-pas>0 && r-pas>=x)
r-=pas;
pas/=2;
}
return r-1;
}
}
int main()
{
FILE *f1,*f2;
f1=fopen("cautbin.in","r");
f2=fopen("cautbin.out","w");
fscanf(f1,"%d",&n);
for(i=1;i<=n;i++)
fscanf(f1,"%d",&v[i]);
fscanf(f1,"%d",&m);
for(i=0;i<m;i++)
{
fscanf(f1,"%d%d",&t,&x);
fprintf(f2,"%d ",BS(t,x));
}
return 0;
}