Cod sursa(job #1533652)

Utilizator VandheerManPopescu Alin VandheerMan Data 22 noiembrie 2015 20:36:13
Problema Cautare binara Scor 100
Compilator cpp Status done
Runda Arhiva educationala Marime 1.06 kb
#include <iostream>
#include <fstream>
using namespace std;

int a[100000],n,m,i,j,x;
short int val;

int binrec(int a[100000], int x, int i,int j)
{
    if (i==j) return i;
    int k=(i+j+1)/2;
    if (a[k]>x) return binrec(a,x,i,k-1);
    else {return binrec(a,x,k,j);};
}
int binrec2(int a[100000], int x, int i,int j)
{
    if (i==j) return i;
    int k=(i+j)/2;
    if (x<=a[k]) return binrec2(a,x,i,k);
    else {return binrec2(a,x,k+1,j);};
}

int main()
{
    freopen("cautbin.in","r",stdin);
    freopen("cautbin.out","w",stdout);
    scanf("%d",&n);
    for (i=1;i<=n;i++) {scanf("%d",&a[i]);};
    scanf("%d",&m);
    while (m--)
    {   scanf("%d%d",&val,&x);
        if (val==0) {
                if (a[binrec(a,x,1,n)]==x)
                        cout<<binrec(a,x,1,n);
                        else cout << -1;
                    };
        if (val==1) {
             cout<<binrec(a,x,1,n);
        };
        if (val==2) {
            cout << binrec2(a,x,1,n);
        };
        if (m>0) cout<<"\n";
    }
    return 0;
}