Pagini recente » Cod sursa (job #2845378) | Cod sursa (job #2221558) | Cod sursa (job #2242742) | Cod sursa (job #1896865) | Cod sursa (job #799585)
Cod sursa(job #799585)
#include <stdio.h>
int v[100000],n;
int caut0(int m)
{
int i=0,pas=1<<16;
while(pas!=0)
{
if(pas+i<n)
{
if(v[pas+i]==m)
{
i=pas+i;
}
}
pas/=2;
}
if(v[i]!=m) return -1;
return i+1;
}
int caut1(int m)
{
int i=0,pas=2<<16;
while(pas>0)
{
if(pas+i<n)
{
if(v[pas+i]<=m)
{
i=pas+i;
}
}
pas/=2;
}
return i+1;
}
int caut2(int m)
{
int i=0,pas=2<<16;
while(pas>0)
{
if(pas+i<n)
{
if(v[pas+i]<m)
{
i=pas+i;
}
}
pas/=2;
}
return i+2;
}
int main()
{
FILE *in,*out;
int i,nr,fel,num;
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",&nr);
for(i=0;i<nr;i++)
{
fscanf(in,"%d%d",&fel,&num);
if(fel==0)
{
fprintf(out,"%d\n",caut0(num));
}
if(fel==1)
{
fprintf(out,"%d\n",caut1(num));
}
if(fel==2)
{
fprintf(out,"%d\n",caut2(num));
}
}
return 0;
}