Pagini recente » Cod sursa (job #2441622) | Cod sursa (job #1590739) | Cod sursa (job #2701111) | Cod sursa (job #2875471) | Cod sursa (job #2420333)
#include<fstream>
using namespace std;
ifstream fin("cautbin.in");
ofstream fout("cautbin.out");
int N,M,A[100001];
int cautareClasica(int a[],int dim,int value){
int i,step;
for(step=1;step<dim;step<<=1);
for(i=0;step;step>>=1)
if(i+step<dim&&a[i+step]<=value)
i+=step;
if(a[i]!=value)
return -1;
else
return i+1;
}
int cautarePozitieMaxima(int a[],int dim,int value){
int i,step;
for(step=1;step<dim;step<<=1);
for(i=0;step;step>>=1)
if(i+step<dim&&a[i+step]<=value)
i+=step;
return i+1;
}
int cautarePozitieMinima(int a[],int dim,int value){
int i,step;
for(step=1;step<dim;step<<=1);
for(i=0;step;step>>=1)
if(i+step<dim&&a[i+step]<=value-1)
i+=step;
return i+2;
}
int main(){
fin>>N;
for(int i=0;i<N;++i)
fin>>A[i];
fin>>M;
for(int i=0;i<M;++i){
int oper,x;
fin>>oper>>x;
if(oper==0)
fout<<cautareClasica(A,N,x)<<"\n";
else
if(oper==1)
fout<<cautarePozitieMaxima(A,N,x)<<"\n";
else
fout<<cautarePozitieMinima(A,N,x)<<"\n";
}
fin.close();
fout.close();
return 0;
}