Pagini recente » Cod sursa (job #1389912) | Cod sursa (job #1026736) | Cod sursa (job #302829) | Cod sursa (job #315345) | Cod sursa (job #1424804)
#include <stdio.h>
#include <stdlib.h>
#include <math.h>
long v[100001];
int main()
{
FILE *fin,*fout;
fin=fopen ("cautbin.in","r");
fout=fopen ("cautbin.out","w");
long N,M;
fscanf (fin,"%d",&N);
long i,j;
for (i=1; i<=N; i++)
{
fscanf (fin,"%d",&v[i]);
}
fscanf (fin,"%d",&M);
int tip,L;
L=floor (log2 (N));
long x,pas;
for (i=1; i<=M; i++)
{
fscanf (fin,"%d",&tip);
fscanf (fin,"%d",&x);
j=0;
pas=1<<L;
if (tip==0)
{
while (pas!=0)
{
if ((j+pas)<=N && v[j+pas]<=x)
{
j+=pas;
}
pas>>=1;
}
if (v[j]!=x)
{
fprintf (fout,"%d\n",-1);
}
else
{
fprintf (fout,"%d\n",j);
}
}
else if (tip==1)
{
while (pas!=0)
{
if ((j+pas)<=N && v[j+pas]<=x)
{
j+=pas;
}
pas>>=1;
}
fprintf (fout,"%d\n",j);
}
else
{
while (pas!=0)
{
if ((j+pas)<=N && v[j+pas]<x)
{
j+=pas;
}
pas>>=1;
}
fprintf (fout,"%d\n",j+1);
}
}
fclose (fin);
fclose (fout);
return 0;
}