Pagini recente » Cod sursa (job #571677) | Cod sursa (job #806293) | Cod sursa (job #765311) | Cod sursa (job #808243) | Cod sursa (job #799597)
Cod sursa(job #799597)
#include <stdio.h>
int v[100000];
int caz0(int x,int m){
int i=0,pas=1<<16;
while(pas!=0){
if(i+pas<m && v[pas+i]<=x)
i+=pas;
pas/=2;
}
if(v[i]==x) return i;
return -2;
}
int caz1(int x,int m){
int i=0,pas=1<<16;
while(pas!=0){
if(i+pas<m && v[i+pas]<=x)
i+=pas;
pas/=2;
}
return i;
}
int caz2(int x,int m){
int i=-1,pas=1<<16;
while(pas!=0){
if(i+pas < m && v[i+pas]<x)
i+=pas;
pas/=2;
}
return i+1;
}
int main(){
int n,m,tip,i,j,x;
FILE *fin,*fout;
fin=fopen("cautbin.in","r");
fout=fopen("cautbin.out","w");
fscanf(fin,"%d",&m);
for(i=0;i<m;i++)
fscanf(fin,"%d",&v[i]);
fscanf(fin,"%d",&n);
for(j=0;j<n;j++){
fscanf(fin,"%d%d",&tip,&x);
switch(tip){
case 0 :
i=caz0(x,m);
break;
case 1 :
i=caz1(x,m);
break;
case 2 :
i=caz2(x,m);
break;
}
fprintf(fout,"%d\n",i+1);
}
fclose(fin);
fclose(fout);
return 0;
}