Pagini recente » Cod sursa (job #2198447) | Cod sursa (job #2810587) | Cod sursa (job #741247) | Cod sursa (job #2177199) | Cod sursa (job #799596)
Cod sursa(job #799596)
#include <stdio.h>
FILE* in;
FILE* out;
int v[100000],n;
int caut0 (int x)
{
int i=-1,pes=1<<16;
while (pes!=0)
{
if (i+pes<n && v[i+pes]<=x)
i+=pes;
pes/=2;
}
if(v[i]!=x) return -1;
return 1+i;
}
int caut1 (int x)
{
int i=-1,pes=1<<16;
while (pes!=0)
{
if (i+pes<n && v[i+pes]<=x)
i+=pes;
pes/=2;
}
return 1+i;
}
int caut2 (int x)
{
int i=-1,pes=1<<16;
while (pes!=0)
{
if (i+pes<n && v[i+pes]<x)
i+=pes;
pes/=2;
}
return 2+i;
}
int main()
{
int i,x,m,intr;
in = fopen("cautbin.in","r");
out = fopen("cautbin.out","w");
fscanf (in,"%d",&n);
for (i=0; i<n; i++)
{
fscanf (in,"%d",&v[i]);
}
fscanf (in,"%d",&m);
while (m!=0)
{
fscanf (in,"%d",&intr);
if (intr==0)
{
fscanf (in,"%d",&x);
fprintf (out,"%d\n",caut0(x));
}
if (intr==1)
{
fscanf (in,"%d",&x);
fprintf (out,"%d\n",caut1(x));
}
if (intr==2)
{
fscanf (in,"%d",&x);
fprintf (out,"%d\n",caut2(x));
}
m--;
}
return 0;
}