Cod sursa(job #1677741)

Utilizator JiyuuNoTsubasaMaria Guran JiyuuNoTsubasa Data 6 aprilie 2016 19:20:43
Problema Cautare binara Scor 100
Compilator cpp Status done
Runda Arhiva educationala Marime 1.16 kb
#include <stdio.h>
# define nmax 100001
using namespace std;

int v[nmax];
int main()
{
    int n,m,p,pas=1<<16,i=0,j,x;
    freopen ("cautbin.in","r",stdin);
    freopen ("cautbin.out","w",stdout);
    scanf("%d",&n);
    for (j=1; j<=n; j++)
        scanf ("%d",&v[j]);
    scanf ("%d",&m);
    for (j=1; j<=m; j++)
    {
        scanf ("%d%d",&p,&x);
        if (p==0)
        {
            pas=1<<16,i=0;
            while (pas!=0)
            {
                if (i+pas<=n&&v[i+pas]<=x)
                    i+=pas;
                pas/=2;
            }
            if (i==0||v[i]<x) printf ("-1");
            else printf("%d",i);
        }
        if (p==1)
        {
            pas=1<<16,i=0;
            while (pas!=0)
            {
                if (i+pas<=n&&v[i+pas]<=x)
                    i+=pas;
                pas/=2;
            }
            printf ("%d",i);

        }
        if (p==2)
        {
            pas=1<<16,i=0;
            while (pas!=0)
            {
                if (i+pas<=n&&v[i+pas]<x)
                    i+=pas;
                pas/=2;
            }
            printf("%d",i+1);
        }
        printf ("\n");

    }

    return 0;
}