Cod sursa(job #194609)

Utilizator MciprianMMciprianM MciprianM Data 12 iunie 2008 12:28:09
Problema Cautare binara Scor 0
Compilator cpp Status done
Runda Arhiva educationala Marime 0.67 kb
#include<fstream>
using namespace std;
int a[100009],n;
ofstream g("cautbin.out");

int binser(int x,int &lop){
  int i, pas;
  for(pas=1;pas<=n;pas<<=1);
  for(i=0;pas;pas>>=1)
    if(i+pas<=n&&a[i+pas]<=x)
      i+=pas;
  lop=i;
  if(a[i]!=x)  return -1;
  else return i;
}

void raspunde(int t, int x){
   int k;
   int r=binser(x,k);
   switch(t){
     case 0: g<<r+1<<'\n';break;
     case 1: g<<k+1<<'\n';break;
     case 2:g<<k+2<<'\n';break;
   }
}

int main(){
  int m, t, x,i;
  ifstream f("cautbin.in");
  f>>n;
  for(i=0;i<n;i++)
    f>>a[i];
  f>>m;
  for(i=0;i<m;i++){
    f>>t;
    f>>x;
    raspunde(t,x);
  }
  return 0;
}