Cod sursa(job #1519133)
Utilizator | Data | 6 noiembrie 2015 21:18:51 | |
---|---|---|---|
Problema | Cautare binara | Scor | 0 |
Compilator | cpp | Status | done |
Runda | Arhiva educationala | Marime | 1.62 kb |
#include <fstream>
using namespace std;
int n, m, x, mid, st, dr, i, v[100001], a, p=0, q=0, b[100001], pam ;
ifstream fin("cautbin.in");
ofstream fout("cautbin.out");
int main(){
fin>>n;
for(i=1;i<=n;i++)
fin>>v[i];
fin>>m;
for(i=1;i<=m;i++)
fin>>a>>b[i];
for(i=1;i<=m;i++){
if(a==1){
st=1;
dr=n;
while(st<=dr){
mid=(st+dr)/2;
if(v[mid]<=b[i])
st=mid+1;
else
dr=mid-1;
}
fout<<st<<"\n";
}
else{
if(a==0){
st=1;
dr=n;
while(st<=dr){
mid=(st+dr)/2;
if(b[i]==v[mid]){
pam=mid;
st=mid+1;
q=1;
}
else{
if(v[mid]>b[i])
dr=mid-1;
else
st=mid+1;
}
}
if(q==1)
fout<<pam<<"\n";
else
fout<<"-1 ";
}
if(a==2){
st=1;
dr=n;
while(st<=dr){
mid=(st+dr)/2;
if(v[mid]>=b[i])
dr=mid-1;
else
st=mid+1;
}
fout<<st<<"\n";
}
}
}
return 0;
}