Cod sursa(job #1827008)

Utilizator teogeoBanu Teodora teogeo Data 11 decembrie 2016 12:36:15
Problema Cautare binara Scor 100
Compilator cpp Status done
Runda Arhiva educationala Marime 1.47 kb
#include <fstream>

using namespace std;
int n,m,v[100001],x,mid,st,dr,i,op,sol;

int main()
{
    ifstream cin("cautbin.in");
    ofstream cout("cautbin.out");
    cin>>n;
    for(i=1;i<=n;i++)
        cin>>v[i];
    cin>>m;
    while(m>0){
        m--;
        cin>>op>>x;

    if(op==0){
        st=1;
        dr=n;
        sol=-1;
        while(st<=dr){
            mid=(st+dr)/2;
            if(x==v[mid]){

                while(mid<=n&&x==v[mid])
                     mid++;
                sol=mid-1;
                break;

            }
            else
                if(x<v[mid])
                    dr=mid-1;
                else
                    st=mid+1;
        }
        cout<<sol<<'\n';
        continue;
    }
if(op==1){
    st=1;
        dr=n;
        sol=-1;
        while(st<=dr){
            mid=(st+dr)/2;

                if(x<v[mid])
                    dr=mid-1;
                else
                if(x>=v[mid]){
                      sol=mid;
                       st=mid+1;
                }
        }
        cout<<sol<<'\n';
        continue;
}
st=1;
        dr=n;
        sol=-1;
        while(st<=dr){
            mid=(st+dr)/2;

                if(x<=v[mid])
                    {
                      sol=mid;
                       dr=mid-1;
                    }

                else

                       st=mid+1;

        }
        cout<<sol<<'\n';
    }
    return 0;
}