Cod sursa(job #194442)

Utilizator Snavenportnespecificat Snavenport Data 10 iunie 2008 18:01:23
Problema Cautare binara Scor 100
Compilator cpp Status done
Runda Arhiva educationala Marime 1.44 kb
#include <fstream.h>

#define Nmax 100001

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

int n,m,v[Nmax];

int quest1(int x)
{
    int st,dr,mijl;
    st=1,dr=n;
    while (st<=dr)
    {
          mijl=(st+dr)/2;
          if (v[mijl]>x)
            dr=mijl-1;
          else
            if (v[mijl]<x)
               st=mijl+1;
            else
               return mijl;
    }
    return -1;
}
    

int quest2(int x)
{
     
     int st,dr,mijl,i;
     st=1,dr=n;
     i=0;
     while (st<=dr)
     {
         mijl=(st+dr)/2;
         if (v[mijl]<=x)
         {
                   st=mijl+1;
                   i=mijl;
         }
         else
            dr=mijl-1;
     }
     return i;
} 
     
int quest3(int x)
{
     
     int st,dr,mijl,i;
     st=1,dr=n;
     i=0;
     while (st<=dr)
     {
         mijl=(st+dr)/2;
         if (v[mijl]>=x)
         {
                   dr=mijl-1;
                   i=mijl;
         }
         else
            st=mijl+1;
     }
     return i;
} 
     


int main()
{
    
   int i;
   f>>n;
   for (i=1;i<=n;i++)
     f>>v[i];
   f>>m;
   int question,nr;
   for (i=1;i<=m;i++)
    {
          f>>question>>nr;
          if (question==0)
             g<<quest1(nr);
          else
            if (question==1)
                g<<quest2(nr);
            else
               g<<quest3(nr);
          g<<"\n";
    }
   return 0;
}