Cod sursa(job #2740690)

Utilizator RedPipperNastasa Stefan-Alexandru RedPipper Data 13 aprilie 2021 21:35:09
Problema Cautare binara Scor 0
Compilator cpp-64 Status done
Runda Arhiva educationala Marime 1.12 kb
#include <fstream>

using namespace std;

ifstream fin("cautbin.in");
ofstream fout("cautbin.out");

int n;
int a[100000];

int cautBin(int elem, int sir[], int cer){

    int a0,a1,a2;
    int left = 0;
    int right = n-1;
    while(left<right){
        
        
        int mid = (left+right)/2;
        if(cer==2){
            if(elem<=sir[mid]){
                right = mid;
            }
            else{
                left = mid+1;
            }
            
        }
        else{
            if(elem>=sir[mid]){
                left = mid;
            }
            else{
                right = mid-1;
            }
        }
        if(right-left<=1)
        {
            if(cer==1 || cer==0)
                return (sir[right]<=elem ? right : left);
            else if(cer==2)
                return (sir[left]>=elem ? left : right);
        }
        
    }
    

}


int main(){

    fin>>n;
    for(int i=0;i<n;++i)
        fin>>a[i];
        //citire vector
        
    int k;
    fin>>k;
    while(k--){
        int cer, val;
        fin>>cer>>val;
        
        fout<<cautBin(val, a, cer)+1<<'\n';
    }

    return 0;
}