Cod sursa(job #661914)

Utilizator Byby8Ene Bianca Byby8 Data 15 ianuarie 2012 15:17:21
Problema Cautare binara Scor 0
Compilator c Status done
Runda Arhiva educationala Marime 0.95 kb
#include<fstream>
using namespace std;
int a[100008],n,m,val,cz;
ifstream f("cautbin.in");
ofstream g("cautbin.out");

int caz_1(int x)
{int mid,hi=n,lo=1,poz;
  while(lo<=hi)
  {mid=(lo+hi)/2;
  if(a[mid]>x)
  hi=mid-1;
   else
  lo=mid+1;
  poz=mid;}
  if(a[mid]==x)
return poz;
else
return -1;
}
  

int caz_2(int x)
{int mid,hi=n,lo=1,poz;
  while(lo<=hi)
  {mid=(lo+hi)/2;
  if(a[mid]<=x)
  lo=mid+1;
  else
  {hi=mid-1;
  poz=mid;}
}
  return poz;   
}

int caz_3(int x)
{int mid,hi=n,lo=1,poz;
   while(lo<=hi)
   {mid=(lo+hi)/2;
    if( a[mid]>=x)
    hi=mid-1;
    else
    {lo=mid+1;
    poz=mid;}
}
    return poz;
}    
    
    int main()

{ 
while(f)
 f>>n;
for(int i=1;i<=n;i++)
 f>>a[i];
  f>>m;
for(int i=0;i<m;i++)
 {f>>cz>>val;
   if(cz==0) 
    g<<caz_1(val)<<"\n";
   if(cz==1) 
    g<<caz_2(val)<<"\n";
   if(cz==2) 
    g<<caz_3(val)<<"\n";
  }
f.close();
g.close();
return 0;}