Cod sursa(job #274977)

Utilizator Andrei_ScorpioAndreiana Andrei Daniel Andrei_Scorpio Data 10 martie 2009 09:49:20
Problema Cautare binara Scor 100
Compilator cpp Status done
Runda Arhiva educationala Marime 1.04 kb
#include<stdio.h>   
#include<iostream.h>   
  
#define MAX 100005
  
int n,m,i,v[MAX],op,x,var;   
  
int binary_search(int val)   
{   
 int st=1,dr=n,m;   
  
 while(st!=dr)   
 {   
   m=dr+(st-dr)/2;   
  
   if(val>=v[m]) st=m;   
   else          dr=m-1;  }   
  
 return dr;   
}   
  
  
  
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);   
  
  while(m--)   
  {   
  scanf("%d %d",&op,&x);   
  
  var=binary_search(x);   
  
  //if(op==0 || op==1) while(v[var+1]==x) var++;   
  if(op==2)          while(v[var-1]==x) var--;   
  
  if(op==0)  if(v[var]!=x)  printf("-1\n");   
         else           printf("%d\n",var);   
  
  if(op==1)  if(v[var]>x)   printf("%d\n",var-1);   
         else           printf("%d\n",var);   
  
  if(op==2)  if(v[var]<x)   printf("%d\n",var+1);   
         else           printf("%d\n",var);   
  }   
  
  
  return 0;   
}