Pagini recente » Cod sursa (job #1827596) | Cod sursa (job #1527508)
#include <stdio.h>
#define lim 100000
#define LOG 16
int v[lim+1],n;
int cautx(int x){
int pas,i,pp=-1;
pas=1<<LOG;
i=0;
while(pas!=0&&pp==-1){
if(i+pas<=n&&v[i+pas]<=x)
i+=pas;
if(v[i]==x)
pp=i;
pas/=2;
}
return pp;
}
int cautmicx(int x){
int pas,i;
pas=1<<LOG;
i=0;
while(pas!=0){
if(i+pas<=n&&v[i+pas]<=x)
i+=pas;
pas/=2;
}
return i;
}
int cautmarex(int x){
int pas,i;
pas=1<<LOG;
i=0;
while(pas!=0){
if(i+pas<=n&&v[i+pas]<x)
i+=pas;
pas/=2;
}
return i;
}
int main(){
FILE *fin,*fout;
fin=fopen("cautbin.in","r");
fout=fopen("cautbin.out","w");
int i,x,cer,j,m;
fscanf(fin,"%d",&n);
for(i=1;i<=n;i++)
fscanf(fin,"%d",&v[i]);
fscanf(fin,"%d",&m);
for(j=1;j<=m;j++){
fscanf(fin,"%d%d",&cer,&x);
if(cer==0)
fprintf(fout,"%d\n",cautx(x));
if(cer==1)
fprintf(fout,"%d\n",cautmicx(x));
if(cer==2)
fprintf(fout,"%d\n",cautmarex(x)+1);
}
fclose(fin);
fclose(fout);
return 0;
}