Cod sursa(job #1891430)

Utilizator Alex18maiAlex Enache Alex18mai Data 24 februarie 2017 00:08:20
Problema Cautare binara Scor 100
Compilator cpp Status done
Runda Arhiva educationala Marime 1.74 kb
#include <fstream>

using namespace std;

ifstream cin("cautbin.in");
ofstream cout("cautbin.out");

int A[100010];

int main()
{
    int n;
    cin>>n;
    for (int i=1; i<=n; i++){
        cin>>A[i];
    }
    int m;
    cin>>m;
    for (int k=1; k<=m; k++){
        int tip;
        cin>>tip;
        if (tip==0){
            int x;
            cin>>x;
            int st=1;
            int dr=n;
            int y;
            while (st<=dr){
                int mij=(st+dr)/2;
                if (A[mij]>x){
                    dr=mij-1;
                }
                if (A[mij]<=x){
                    st=mij+1;
                    y=mij;
                }
            }
             if (A[y]==x){
                cout<<y<<'\n';
            }
            else{
                cout<<-1<<'\n';
            }
        }
        if (tip==1){
            int x;
            cin>>x;
            int st=1;
            int dr=n;
            int y;
            while (st<=dr){
                int mij=(st+dr)/2;
                if (A[mij]>x){
                    dr=mij-1;
                }
                if (A[mij]<=x){
                    st=mij+1;
                    y=mij;
                }
            }
            cout<<y<<'\n';
        }
        if (tip==2){
            int x;
            cin>>x;
            int st=1;
            int dr=n;
            int y;
            while (st<=dr){
                int mij=(st+dr)/2;
                if (A[mij]>=x){
                    dr=mij-1;
                    y=mij;
                }
                if (A[mij]<x){
                    st=mij+1;
                }
            }
            cout<<y<<'\n';
        }
    }
    return 0;
}