Cod sursa(job #1989185)
Utilizator | Data | 6 iunie 2017 14:06:45 | |
---|---|---|---|
Problema | Cautare binara | Scor | 100 |
Compilator | cpp | Status | done |
Runda | Arhiva educationala | Marime | 1.38 kb |
#include<iostream>
#include<fstream>
using namespace std;
ifstream fin ("cautbin.in");
ofstream fout("cautbin.out");
int n,m,i,a[100001],b,c,p,u,mid,ok;
int main(){
fin>>n;
for(i=1;i<=n;i++)
fin>>a[i];
fin>>m;
for(i=1;i<=m;i++){
fin>>b>>c;
//
if(b==0){
ok=0;
p=1;
u=n;
while(p<=u){
mid=(p+u)/2;
if(a[mid]==c){
ok++;
p=mid+1;
}
else
if(a[mid]<c)
p=mid+1;
else
u=mid-1;
}
if(ok>0)
fout<<u<<'\n';
else
fout<<"-1"<<'\n';
}
//
if(b==1){
p=1;
u=n;
while(p<=u){
mid=(p+u)/2;
if(a[mid]<=c)
p=mid+1;
else
u=mid-1;
}
fout<<u<<'\n';
}
//
if(b==2){
p=1;
u=n;
while(p<=u){
mid=(p+u)/2;
if(a[mid]>=c)
u=mid-1;
else
p=mid+1;
}
fout<<p<<'\n';
}
}
}