Cod sursa(job #2031809)

Utilizator VionaFFilip Yvonna VionaF Data 3 octombrie 2017 20:44:24
Problema Cautare binara Scor 0
Compilator cpp Status done
Runda Arhiva educationala Marime 1.48 kb
#include <iostream>
using namespace std;

int numara(int n, int v[])
{
    int Max = 1;
    int in = 1;
    for(int i=2;i<=n;i++)
    {
        if(v[in] != v[i])
        {
            Max = max(Max, i-in);
            in = i;
        }
    }
    Max = max(Max, n-in + 1);
    return Max;
}

int pozitie0(int n, int v[], int x)
{
    int in=1;
    int sf=n;
    while(in<=sf)
    {
        int mij=(in+sf)/2;

        if(v[mij]>x)
            sf=mij-1;
        else
            in=mij+1;

    }
    if(v[sf]==x)
        return sf;
    else
        return -1;
}


int pozitie1(int n, int v[], int x)
{
    int in=1;
    int sf=n;
    while(in<=sf)
    {
        int mij=(in+sf)/2;

        if(v[mij]>x)
            sf=mij-1;
        else
            in=mij+1;

    }

        return sf;

}



int pozitie2(int n, int v[], int x)
{
    int in=1;
    int sf=n;
    while(in<=sf)
    {
        int mij=(in+sf)/2;

        if(v[mij]>=x)
            sf=mij-1;
        else
            in=mij+1;

    }

        return in;

}

    int a[100001];
int main()
{
    int n,x,m,t;
    cin>>n;
    for(int i=1;i<=n;i++)
    {
        cin>>a[i];
    }
    cin>>m;
    for(int i=1;i<=m;i++)
    {

        cin>>t>>x;
        if(t==0)
            cout<<pozitie0(n,a,x)<<"\n";

        if(t==1)
            cout<<pozitie1(n,a,x)<<"\n";

        if(t==2)
            cout<<pozitie2(n,a,x)<<"\n";

    }

    return 0;
}