Cod sursa(job #2462388)

Utilizator maria19Preda Maria maria19 Data 27 septembrie 2019 11:10:04
Problema Cautare binara Scor 0
Compilator cpp-64 Status done
Runda Arhiva educationala Marime 1.28 kb
#include <fstream>
using namespace std;
ifstream cin("cautbin.in");
ofstream cout("cautbin.out");
int st,dr,mid,v[100001],m,n,tip,i,x;
int main(){
    cin >> n;
    for(i=1;i<=n;i++)
        cin >> v[i];
    cin >> m;
    for(i=1;i<=m;i++){
        cin >> tip >> x;
        switch(tip){
        case 0:
            st=1; dr=n;
            while(st<=dr){
                int mid=(st+dr)/2;
                if(x>=v[mid])
                   st=mid+1;
                else
                    dr=mid-1;
            }
            if(dr>0 && v[dr]==x)
                cout << dr << "\n";
            else
                cout << "-1" << "\n";
            break;
        case 1:
            st=1; dr=n;
            while(st<=dr){
                int mid=(st+dr)/2;
                if(x>=v[mid])
                   st=mid+1;
                else
                    dr=mid-1;
            }
            if(dr>0 && v[dr]==x)
                cout << dr << "\n";
            break;
        case 2:
            st=1; dr=n;
            while(st<=dr){
                mid=(st+dr)/2;
                if(v[mid]<x)
                    st=mid+1;
                else
                    dr=mid-1;
            }
            cout << st << "\n";
            break;
        }
    }
}