Cod sursa(job #1298138)
Utilizator | Data | 22 decembrie 2014 16:21:34 | |
---|---|---|---|
Problema | Cautare binara | Scor | 100 |
Compilator | cpp | Status | done |
Runda | Arhiva educationala | Marime | 1.45 kb |
#include<fstream>
using namespace std;
ifstream fin("cautbin.in");
ofstream fout("cautbin.out");
int n,mid,p,u,i,x,y,v[100005],t;
int main(){
fin>>n;
for(i=1;i<=n;i++){
fin>>v[i];
}
fin>>t;
for(;t!=0;t--){
fin>>x>>y;
if(x==0){
p=1;
u=n;
while(p<=u){
mid=(p+u)/2;
if(v[mid]<=y)
p=mid+1;
else
u=mid-1;
}
mid=(p+u)/2;
if(v[mid]>y){
mid--;
}
if(v[mid]==y){
fout<<mid<<"\n";
}else
fout<<"-1\n";
}
if(x==1){
p=1;
u=n;
while(p<u){
mid=(p+u)/2;
if(v[mid]<=y)
p=mid+1;
else
u=mid;
}
mid=(p+u)/2;
if(v[mid]>y){
mid--;
}
fout<<mid<<"\n";
}
if(x==2){
p=1;
u=n;
while(p<u){
mid=(p+u)/2;
if(v[mid]<y)
p=mid+1;
else
u=mid;
}
mid=(p+u)/2;
if(v[mid]<y){
mid++;
}
fout<<mid<<"\n";
}
}
return 0;
}