Cod sursa(job #2074943)

Utilizator AntoniuFicAntoniu Ficard AntoniuFic Data 25 noiembrie 2017 10:14:06
Problema Cautare binara Scor 100
Compilator cpp Status done
Runda Arhiva educationala Marime 1.44 kb
#include <stdio.h>

using namespace std;
int x, st, dr, mij, m, n, a[100000]={0}, p;

void cerinta0(int x)
{
    scanf("%d \n", &x);
    p=-1;
    for(st=0, dr=n-1; st<=dr;)
    {
        mij=(st+dr)/2;
        if(a[mij]<=x)
        {
            if(a[mij]==x)
                p=mij+1;
            st=mij+1;
        }
        else
            dr=mij-1;
    }
    return;
}

void cerinta1(int x)
{
    scanf("%d \n", &x);
    p=-1;
    for(st=0, dr=n-1; st<=dr;)
    {
        mij=(st+dr)/2;
        if(a[mij]<=x)
        {
            p=mij+1;
            st=mij+1;
        }
        else
            dr=mij-1;
    }
    return;
}

void cerinta2(int x)
{
    scanf("%d \n", &x);
    p=-1;
    for(st=0, dr=n-1; st<=dr;)
    {
        mij=(st+dr)/2;
        if(a[mij]>=x)
        {
            p=mij+1;
            dr=mij-1;
        }
        else
            st=mij+1;
    }
    return;
}

int main()
{
    freopen("cautbin.in", "r", stdin);
    freopen("cautbin.out", "w", stdout);
    scanf("%d \n", &n);
    for(int i=0; i<n; i++)
        scanf("%d, ", &a[i]);
    scanf("%d \n", &m);
    for(int i=0; i<m; i++)
    {
        int intrebare;
        scanf("%d, ", &intrebare);
        if(intrebare==0)
            cerinta0(x);
        else if(intrebare==1)
            cerinta1(x);
        else if(intrebare==2)
            cerinta2(x);
        printf("%d \n", p);
    }
    return 0;
}