Cod sursa(job #502420)

Utilizator biroBiro Alexandru biro Data 19 noiembrie 2010 13:22:37
Problema Cautare binara Scor 100
Compilator cpp Status done
Runda biro_daily_quest_no.2 Marime 0.73 kb
#include <algorithm>

using namespace std ;

int v[100001] ;

int main() {
  freopen ("cautbin.in","r",stdin) ;
  freopen ("cautbin.out","w",stdout) ;
  int a , b , n , m ;
  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" , &a , &b ) ;
    if (a==0) {
      int x=upper_bound(v+1,v+n+1,b)-v-1;
      if (x>=1 && x<=n && v[x]==b) {
        printf ("%d\n" , x) ;
      }
      else printf ("-1\n") ;
    }
    if (a==1) {
      int x=lower_bound(v+1,v+n+1,b+1)-v-1;
      printf ("%d\n" , x) ;
    }
    if (a==2) {
      int x=upper_bound(v+1,v+n+1,b-1)-v;
      printf ("%d\n" , x) ;
    }
  }

  return 0;
}