Pagini recente » Cod sursa (job #1730934) | Cod sursa (job #200490) | Cod sursa (job #783988) | Cod sursa (job #742170) | Cod sursa (job #429724)
Cod sursa(job #429724)
#include <stdio.h>
FILE *f=fopen("cautbin.in","r"),*g=fopen("cautbin.out","w");
int i,n,v[100001],m,k,d,t,x,q,ok;
int main(void)
{
fscanf(f,"%d",&n);
for (i=1;i<=n;i++)
fscanf(f,"%d",&v[i]);
fscanf(f,"%d",&m);
k=1;
while ((1<<k)<=n)
k++;
k--;
for (i=1;i<=m;i++)
{
fscanf(f,"%d%d",&t,&x);
q=k;
d=0;
ok=0;
while (ok==0 && q>=0)
{
if ((d+(1<<q))<=n && v[d+(1<<q)]<=x)
d+=(1<<q);
q--;
}
if (t==0)
if (v[d]==x) fprintf(g,"%d\n",d);
else fprintf(g,"-1\n");
else
{
if (t==1)
fprintf(g,"%d\n",d);
else {while (v[d]>=x) d--; d++; fprintf(g,"%d\n",d);}
}
}
fclose(g);
return 0;
}