Pagini recente » Cod sursa (job #1999709) | Cod sursa (job #183403) | Cod sursa (job #2256641) | Cod sursa (job #2532076) | Cod sursa (job #876934)
Cod sursa(job #876934)
#include<fstream>
using namespace std;
#define Max 100004
ifstream fin("cautbin.in");
ofstream fout("cautbin.out");
unsigned int N,M,poz[3],X,aux;
unsigned long long V[Max];
void cb(unsigned int left, unsigned int right){
if(left<=right){
int mid = left + (right-left)/2;
if(aux==0){
if(V[mid]<X){
cb(mid+1,right);
}
if(V[mid]>X){
cb(left,mid-1);
}
if(V[mid]==X){
poz[0]=mid;
cb(mid+1,right);
}
}
if(aux==1){
if(V[mid]<=X){
poz[1]=mid;
cb(mid+1,right);
}
if(V[mid]>X){
cb(left,mid-1);
}
}
if(aux==2){
if(V[mid]>=X){
poz[2]=mid;
cb(left,mid-1);
}
if(V[mid]<X){
cb(mid+1,right);
}
}
}
}
int main(){
fin>>N;
for(unsigned int i=1;i<=N;i++){
fin>>V[i];
}
fin>>M;
for(unsigned int i=1;i<=M;i++){
fin>>aux>>X;
cb(1,N);
fout<<poz[aux]<<"\n";
}
return 0;
}