Cod sursa(job #283836)

Utilizator pedobearBacauanu Vlad pedobear Data 20 martie 2009 00:02:52
Problema Cautare binara Scor 40
Compilator cpp Status done
Runda Arhiva educationala Marime 0.95 kb
#include <stdio.h>

int v[100001];
int i,n,m,x,sol,mid,tip;

int cbin (int st, int dr, int x)
{
     while (st<=dr){
           mid=(st+dr)/2;
           if (v[mid]<=x){
                          sol=mid;
                          st=mid+1;
                          }
           else dr=mid-1;
           }
}

int main ()
{
    freopen ("cautbin.in","r",stdin);
    freopen ("cautbin.out","w",stdout);
    
    scanf ("%d",&n);
    for (i=1;i<=n;i++) scanf ("%d",&v[i]);
    scanf ("%d",&m);
    
    for (i=1;i<=m;i++){
        scanf ("%d %d",&tip,&x);
        cbin (1,n,x);
        if (tip==0) {
                    if (v[sol]==x) printf ("%d\n",sol);
                    else printf ("-1\n");
                    }
        else if (tip==1) printf ("%d\n",sol);
        else {
             if (v[sol]==x) printf ("%d\n",sol);
             else printf ("%d\n",sol+1);
             }
        }
        
    return 0;
}