Pagini recente » Cod sursa (job #1098555) | Cod sursa (job #411221) | Cod sursa (job #47571) | Cod sursa (job #40070) | Cod sursa (job #2029835)
#include <fstream>
#include <algorithm>
using namespace std;
ifstream fin ("cautbin.in");
ofstream fout ("cautbin.out");
int n,m,p,u,mid,i,test;
unsigned long long x,v[100001];
void caut1(int x){
int p,u;
p=1;
u=n;
while(p<=u){
int mid=p+(u-p)/2;
if(v[mid]==x && v[mid]!=v[mid+1]){
fout<<mid<<"\n";
return;
}
else{
if(v[mid]<=x)
p=mid;
else
u=mid;
}
}
fout<<"-1";
}
void caut2 (int x){
int p,u;
p=1;
u=n;
while(p<=u){
int mid=p+(u-p)/2;
if(v[mid]<=x && v[mid+1]>x){
fout<<mid<<"\n";
return;
}
else{
if(v[mid]<=x)
p=mid;
else
u=mid;
}
}
}
void caut3(int x){
int p,u;
p=1;
u=n;
while(p<=u){
int mid=p+(u-p)/2;
if(v[mid]>=x && v[mid-1]<x){
fout<<mid<<"\n";
return;
}
else{
if(v[mid]<x)
p=mid;
else
u=mid;
}
}
}
int main(){
fin>>n;
for(i=1;i<=n;i++)
fin>>v[i];
sort(v+1,v+n+1);
fin>>m;
for(i=1;i<=m;i++){
fin>>test>>x;
if(test==0)
caut1(x);
if(test==1)
caut2(x);
if(test==2)
caut3(x);
}
}