Cod sursa(job #2533038)
| Utilizator | Data | 28 ianuarie 2020 18:29:12 | |
|---|---|---|---|
| Problema | Cautare binara | Scor | 100 |
| Compilator | cpp-64 | Status | done |
| Runda | Arhiva educationala | Marime | 1.42 kb |
#include <fstream>
using namespace std;
int n,i,TESTE,caz,x,st,dr,mid,v[100010];
int main () {
ifstream fin ("cautbin.in");
ofstream fout("cautbin.out");
fin>>n;
for (i=1;i<=n;i++){
fin>>v[i];
}
fin>>TESTE;
for (i=1;i<=TESTE;i++) {
fin>>caz>>x;
if (caz==0) {
st=1;
dr=n;
while (st<=dr) {
int mid=(st+dr)/2;
if (v[mid]<=x){
st=mid+1;
}
else{
dr=mid-1;
}
}
if (dr>0&&v[dr]==x){
fout<<dr<<"\n";
}
else{
fout<<-1<<"\n";
}
}
if (caz==1){
st=1;
dr=n;
while (st<=dr){
int mid=(st+dr)/2;
if (v[mid]<=x){
st=mid+1;
}
else{
dr=mid-1;
}
}
fout<<dr<<"\n";
}
if (caz==2){
st=1;
dr=n;
while (st<=dr){
int mid=(st+dr)/2;
if (v[mid]<x){
st=mid+1;
}
else{
dr=mid-1;
}
}
fout<<st<<"\n";
}
}
return 0;
}
