Cod sursa(job #1710296)

Utilizator ionanghelinaIonut Anghelina ionanghelina Data 28 mai 2016 19:18:19
Problema Cautare binara Scor 100
Compilator cpp Status done
Runda Arhiva educationala Marime 0.8 kb
#include<cstdio>
#include<algorithm>
using namespace std;
int n,v[100005],m,op,x;
int search(int val)
{
    int step,i;
    for(step=1;step<n;step<<=1);
    for(i=0;step;step>>=1)
    {
        if ((i+step)<=n && v[i+step]<=val) i+=step;
    }
    if (v[i]==val)return i;
        return -1;
}
int main()
{
    freopen("cautbin.in","r",stdin);
    freopen("cautbin.out","w",stdout);
    scanf("%d",&n);
    for(int i=1;i<=n;i++)
    {
        scanf("%d",&v[i]);
    }
    scanf("%d",&m);
    for(int i=1;i<=m;i++)
    {
        scanf("%d%d",&op,&x);
        if (op==0) printf("%d\n",search(x));
            else
        if (op==1) printf("%d\n",lower_bound(v+1,v+n+1,x+1)-v-1);
            else
        if (op==2) printf("%d\n",upper_bound(v+1,v+n+1,x-1)-v);
    }
    return 0;
}