Cod sursa(job #2634346)

Utilizator mariaiancIanc Maria mariaianc Data 10 iulie 2020 17:18:18
Problema Cautare binara Scor 0
Compilator cpp-64 Status done
Runda Arhiva educationala Marime 1.04 kb
#include <iostream>

using namespace std;
int poz_max(int n, int v[], int x)
{
    int st, dr, mij;
    st=1;
    dr=n;
    while(st<=dr)
    {
        mij=(st+dr)/2;
        if(v[mij]>x)dr=dr-1;
        else st=st+1;
    }
    mij=(st+dr)/2;
    if(v[mij]>x) mij--;
    if(v[mij]==x) return mij;
    else return -1;
}
int poz_max2(int n, int v[], int x)
{
    int st,dr,mij;
    st=1;
    dr=n;
    while(st<=dr)
    {
        mij=(st+dr)/2;
        if(v[mij]>=x)dr=dr-1;
        else st=st+1;
    }
    mij=(st+dr)/2;
    if(v[mij]>x) mij=mij-1;
    if(v[mij]<=x) return mij;
    else return 0;
}
int poz_min(int n, int v[], int x)
{
    int st,dr,mij;
    st=1;
    dr=n;
    while(st<=dr)
    {
        mij=(st+dr)/2;
        if(v[mij]>=x)dr=dr-1;
        else st=st+1;
    }
    mij=(st+dr)/2;
    if(v[mij]<x)mij=mij+1;
    if(v[mij]>=x)return mij;
    else return -1;
}
int main()
{
    int n,v[200],x,i;
    cin>>n;
    for(i=1; i<=n; i++)
        cin>>v[i];
    cin>>x;
    cout<<poz_min(n,v,x);
}