Cod sursa(job #1284646)

Utilizator dragomirdragomir alex dragomir Data 6 decembrie 2014 18:14:10
Problema Cautare binara Scor 0
Compilator c Status done
Runda Arhiva educationala Marime 1.03 kb
#include <stdio.h>
int n,m,x,i,a[100001],p,u,mij,ok,aux,j,c,d;
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", &x);
        scanf("%d", &m);
    for(j=1;j<=m;j++)
        scanf("%d", &c, &d);
    p=1;
    u=n;
    ok=0;
    while(p<=u)
    {
        mij=(p+u)/2;
        if(a[mij]==x)
        {
            ok=1;
            aux=mij;
        }
        if(x>=a[mij])
            p=mij+1;
        else
            u=mij-1;
    }
    if(ok)
    {
        printf("%d\n", aux);
        printf("%d\n", aux);
        for(i=1;i<=aux;i++)
            if(a[i]==x)
                break;
        printf("%d\n", i);
    }
    else
    {
        printf("-1\n");
        for(i=n;i>=1;i--)
            if(a[i]<x)
                break;
        printf("%d\n", i);
        for(i=1;i<=n;i++)
            if(a[i]>x)
                break;
        printf("%d\n", i);
    }
    return 0;
}