Cod sursa(job #2843039)

Utilizator Vlad_NistorNIstor Vlad Vlad_Nistor Data 1 februarie 2022 21:27:58
Problema Cautare binara Scor 0
Compilator cpp-64 Status done
Runda Arhiva educationala Marime 1.89 kb
	
#include <bits/stdc++.h>
	
using namespace std;
	
#define NMAX 100000
	
#define MMAX 100000;
	
 
	
int a[NMAX];
	
int main(void){
	ofstream cout("cautbin.out");
    ifstream cin("cautbin.in");
    int n,m;
	
    cin >> n;
	
    for(int i =0;i<n;i++){
	
        cin >> a[i];
	
    }
	
    cin >> m;
	
    int x,y;
	
    for(int i =0;i<m;i++){
	
        cin >> x >> y;
	
        if(x == 0){
	
            int dr = n-1;
	
            int st = 0;
	
            int poz = -1;
	
            int mid = 0;
	
            while(st <= dr){
	
                mid = (st+dr) / 2;
	
                if(a[mid] < y){
	
                    st = mid+1;
	
                }else if(a[mid] > y){
	
                    dr = mid-1;
	
                }else{
	
                    poz = mid + 1;
	
                    break;
	
                }
	
            }
	
            cout << poz + 1 << '\n';
	
        }
	
        if(x == 1){
	
            int dr = n-1;
	
            int st = 0;
	
            int poz = -1;
	
            int mid = 0;
	
            while(st <=dr){
	
                mid = (st+dr) / 2;
	
                if(a[mid]<=y){
	
                    poz = mid + 1;
	
                    st = mid + 1;
	
                }else{
	
                    dr = mid-1;
	
                }
	
            }
	
            cout << poz << '\n';
	
        }
	
        if(x == 2){ 
	
            int dr = n-1;
	
            int st = 0;
	
            int poz = -1;
	
            int mid = 0;
	
            while(st <=dr){
	
                mid = (st+dr) / 2;
	
                if(a[mid]>=y){
	
                    poz = mid + 1;
	
                    dr = mid -1;
	
                }else{
	
                    st = mid + 1;
	
                }
	
            }
	
            cout << poz << '\n';
	
        }
	
    }
	
 
	
}