Cod sursa(job #1295830)
Utilizator | Data | 20 decembrie 2014 11:52:04 | |
---|---|---|---|
Problema | Cautare binara | Scor | 60 |
Compilator | cpp | Status | done |
Runda | Arhiva educationala | Marime | 3.1 kb |
#include<fstream>
using namespace std;
short int x;
long long int valoare;
int m,n,i,minim,maxim,mid,q;
ifstream fin("cautbin.in");
ofstream fout("cautbin.out");
int main(){
fin>>n;
long long int v[n];
for(i=0;i<n;i++) fin>>v[i];
fin>>m;
for(i=0;i<m;i++){
fin>>x>>valoare;
minim=0;
q=-1;
maxim=n-1;
if(x==0){
while(minim<=maxim){
mid=(minim+maxim)/2;
if(v[mid]==valoare) {
q=mid+1;
minim=mid+1;
}
else if(v[mid]>valoare) maxim=mid-1;
else minim=mid+1;
}
}
if(x==1){
while(minim<=maxim){
mid=(minim+maxim)/2;
if(v[mid]>valoare) maxim=mid-1;
else {
q=mid+1;
minim=mid+1;
}
}
}
if(x==2){
while(minim<=maxim){
mid=(minim+maxim)/2;
if(v[mid]<valoare) minim=mid+1;
else {
q=mid+1;
maxim=mid-1;
}
}
}
fout<<q<<"\n";
}
return 0;
}