Cod sursa(job #1417480)
Utilizator | Data | 10 aprilie 2015 14:07:10 | |
---|---|---|---|
Problema | Cautare binara | Scor | 100 |
Compilator | cpp | Status | done |
Runda | Arhiva educationala | Marime | 1.56 kb |
#include<fstream>
using namespace std;
int n, i, p, u, mid, t, x, m;
int v[100002];
ifstream fin("cautbin.in");
ofstream fout("cautbin.out");
int main(){
fin>> n;
for(i = 1; i <= n; i++){
fin>> v[i];
}
fin>> m;
for(; m; m--){
fin>> t >> x;
if(t == 0){
p = 1;
u = n;
while(p <= u){
mid = (p + u) / 2;
if(v[mid] <= x){
p = mid + 1;
}
else{
u = mid - 1;
}
}
if(v[u] == x){
fout<< u <<"\n";
}
else{
fout<< -1 <<"\n";
}
}
else{
if(t == 1){
p = 1;
u = n;
while(p <= u){
mid = (p + u) / 2;
if(v[mid] <= x){
p = mid + 1;
}
else{
u = mid - 1;
}
}
fout<< u <<"\n";
}
else{
p = 1;
u = n;
while(p <= u){
mid = (p + u) / 2;
if(v[mid] >= x){
u = mid - 1;
}
else{
p = mid + 1;
}
}
fout<< p <<"\n";
}
}
}
return 0;
}