Cod sursa(job #2386867)

Utilizator calin05Bordeanu Calin calin05 Data 23 martie 2019 19:51:15
Problema Cautare binara Scor 40
Compilator cpp-64 Status done
Runda Arhiva educationala Marime 1.39 kb
#include <bits/stdc++.h>
using namespace std;

ifstream f("cautbin.in");
ofstream g("cautbin.out");

int cerinta1(int vect[], int n, int x)
{
    int st = 0;
    int dr = n-1;
    int mid, rez;
    while(st<=dr){
        mid = (st+dr)/2;
        if(x<vect[mid]){
            dr = mid-1;
        }
        if(x>=vect[mid]){
            st = mid+1;
        }
    }
    if(vect[st-1]==x) return st;
    else return -1;
}

int cerinta2(int vect[], int n, int x)
{
    int st = 0;
    int dr = n-1;
    int mid, rez;
    while(st<=dr){
        mid = (st+dr)/2;
        if(x<vect[mid]){
            dr = mid-1;
        }
        if(x>=vect[mid]){
            st = mid+1;
        }
    }
    return st;
}

int cerinta3(int vect[], int n, int x)
{
    int st = 0;
    int dr = n-1;
    int mid, rez;
    while(st<=dr){
        mid = (st+dr)/2;
        if(x<=vect[mid]){
            dr = mid-1;
        }
        if(x>vect[mid]){
            st = mid+1;
        }
    }
    return st+1;
}

int main()
{
    int n; f >> n;
    int vect[n];
    for(int i = 0; i<n; i++)
        f >> vect[i];

    int intrebari; f >> intrebari;
    for(int i = 0; i<intrebari; i++){
        int q, x; f >> q >> x;
        if(q==0) g << cerinta1(vect, n, x) << endl;
        if(q==1) g << cerinta2(vect, n, x) << endl;
        if(q==2) g << cerinta3(vect, n, x) << endl;
    }
}