Cod sursa(job #2335812)

Utilizator Rmrn56Maracine Mihail Robert Rmrn56 Data 4 februarie 2019 15:36:55
Problema Cautare binara Scor 0
Compilator cpp-64 Status done
Runda Arhiva educationala Marime 1.35 kb
#include <iostream>
#include<fstream>
#include<cmath>
#include<climits>
using namespace std;
int ct;
int BS1(int v[],int l,int r,int x ){
int mid;
while(l<=r){
        mid=l+(r-l)/2;
     if(v[mid]<x) l=mid+1;
    else if(v[mid]==x){
        while(v[mid]==x)
            mid++;
            return mid-1;}
     else if(v[mid]>x) r=mid-1;
}
return -1;
}
int BS2(int v[],int l,int r,int x){
int mid,raux=r,laux=l;
while(raux>=laux){
        mid=laux+(raux-laux)/2;
    if(v[mid]==x){
             while(v[mid]==x)
            mid++;
            return mid-1;}
    else if(x>v[mid])laux=mid+1;
    else if(x<v[mid])raux=mid-1;
}
BS2(v,l,r,x-1);
}
BS3(int v[],int l,int r, int x){
int mid,raux=r,laux=l;
while(raux>=laux){
    mid=laux+(raux-laux)/2;
    if(v[mid]==x){
     while(v[mid]==x)
            mid--;
            return mid+1;
    }
    else if(x>v[mid])laux=mid+1;
    else if(x<v[mid])raux=mid-1;
}
BS3(v,l,r,x+1);
}
int main(){
int n,v[100],x,m,caz;
ifstream in("cin.in");
ofstream out("cout.out");
in>>n;
for(int i=1;i<=n;i++)
    in>>v[i];
in>>m;
    for(int j=1;j<=m;j++){
        in>>caz>>x;
        if(caz==0){
            out<<BS1(v,1,n,x)<<endl;
        }
        if(caz==1){
            out<<BS2(v,1,n,x)<<endl;
        }
        if(caz==2){
            out<<BS3(v,1,n,x)<<endl;
        }

}
}