Cod sursa(job #715697)

Utilizator XladhenianGrigorita Vlad-Stefan Xladhenian Data 17 martie 2012 17:00:02
Problema Cautare binara Scor 0
Compilator cpp Status done
Runda Arhiva educationala Marime 1.43 kb
                                                     
#include <fstream>
#include <algorithm>
using namespace std;

long M[100005];

int main(void)
{
 long N,i,K,a,b;
 fstream fin("cautbin.in",ios::in);
 fstream fout("cautbin.out",ios::out);
 fin >> N;
 for (i = 0;i < N;i += 1)
  {
   fin >> M[i];
  }
 fin >> K;
 for (i = 0;i < K;i += 1)
  {
   fin >> a >> b;
   switch (a)
   {
    case 0 :
      {
       long *p = lower_bound(M + 0,M + N,b);
       if (*p != b)
         {
          fout << "-1\n";
         }
        else
         {
          while (*(p + 1) == *p)
           {
            p += 1;
           }
          fout << ((p - M) + 1) << "\n";
         }
      }
     break;
    case 1 :
      {
       long *p = lower_bound(M + 0,M + N,b);
       if (*p != b)
         {
          fout << ((p - M) + 1) << "\n";
         }
        else
         {
          while (*(p + 1) == *p)
           {
            p += 1;
           }
          fout << ((p - M) + 1) << "\n";
         }
      }
     break;
    case 2 :
      {
       long *p = lower_bound(M + 0,M + N,b);
       if (*p != b)
         {
          fout << (p - M) << "\n";
         }
        else
         {
          while (*(p - 1) == *p)
           {
            p -= 1;
           }
          fout << ((p - M) + 1) << "\n";
         }
      }
     break;
   };
  }
 fin.close();
 fout.close();
 return 0;
}