Cod sursa(job #1379242)
Utilizator | Data | 6 martie 2015 17:08:04 | |
---|---|---|---|
Problema | Cautare binara | Scor | 0 |
Compilator | cpp | Status | done |
Runda | Arhiva educationala | Marime | 1.54 kb |
#include<fstream>
using namespace std;
ifstream fin("cautbin.in");
ofstream fout("cautbin.out");
int n,m,i,p,u,mid,T,x,ok,j,maxim,minim;
int v[100001];
int main(){
fin>>n;
for(i=1;i<=n;i++)
fin>>v[i];
fin>>m;
for(i=1;i<=m;i++){
fin>>T>>x;
ok=0;
for(j=1;j<=n;j++)
if(v[j]==x)
ok=1;
if(ok==0){
fout<<-1<<"\n";
continue;
}
if(T==0){
p=1;
u=n;
while(p<=u){
mid=(p+u)/2;
if(x>=v[mid]){
p=mid+1;
}
else
u=mid-1;
}
fout<<p-1<<"\n";
}
if(T==1){
p=1;
u=n;
maxim=0;
while(p<=u){
mid=(p+u)/2;
if(v[mid]<=x){
p=mid+1;
if(maxim<mid)
maxim=mid;
}
else
u=mid-1;
}
fout<<maxim<<"\n";
}
if(T==2){
p=1;
u=n;
minim=n+1;
while(p<=u){
mid=(p+u)/2;
if(x<=v[mid]){
p=mid+1;
if(minim>=mid)
minim=mid;
}
else
u=mid-1;
}
fout<<minim<<"\n";
}
}
return 0;
}