Cod sursa(job #252415)

Utilizator jeanFMI - Petcu Ion Cristian jean Data 4 februarie 2009 13:41:56
Problema Cautare binara Scor 100
Compilator cpp Status done
Runda Arhiva educationala Marime 0.88 kb
#include<fstream.h>

int v[100010],n,intrebari,x,i,q;

int q1(int x)

 {  int m,s,d;


   for(s=1,d=n;s<=d;)
   {
    m=(s+d)>>1;

     if(v[m]<x) s=m+1;
      else if(v[m]>x) d=m-1;
     else return m;
   }
  return -1;
 }

int q2(int x)

 { int s,m,d,sol;

    for(s=1,d=n;s<=d;)

     {m=(s+d)>>1;

      if(v[m]<=x) {sol=m; s=m+1;}
       else d=m-1;
     }
   return sol;
 }

int q3(int x)

 { int s,d,m,sol;

    for(s=1,d=n;s<=d;)

     { m=(s+d)>>1;

       if(v[m]>=x) {sol=m; d=m-1;}
	else s=m+1;
     }
   return sol;
  }


int main()

{

ifstream f("cautbin.in");
ofstream g("cautbin.out");

f>>n;

for(i=1;i<=n;i++) f>>v[i];

f>>intrebari;

for(i=1;i<=intrebari;i++)

 { f>>q>>x;

   if(q==0) g<<q1(x)<<'\n';
    else if(q==1) g<<q2(x)<<'\n';
    else g<<q3(x)<<'\n';

 }

f.close();
g.close();
return 0;
}