Cod sursa(job #1295831)

Utilizator radu_uniculeu sunt radu radu_unicul Data 20 decembrie 2014 11:53:00
Problema Cautare binara Scor 100
Compilator cpp Status done
Runda Arhiva educationala Marime 3.09 kb
#include<fstream>
using namespace std;
short int x;
long int valoare;
int m,n,i,minim,maxim,mid,q;
ifstream fin("cautbin.in");
ofstream fout("cautbin.out");
int main(){
                fin>>n;
                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;
            }