Cod sursa(job #1575475)

Utilizator IoanaDraganescuIoana Draganescu IoanaDraganescu Data 21 ianuarie 2016 15:50:59
Problema Cautare binara Scor 100
Compilator cpp Status done
Runda Arhiva educationala Marime 1.24 kb
#include <fstream>

using namespace std;

int v[100005];

ifstream fin("cautbin.in");
ofstream fout("cautbin.out");

int main()
{
   int n, m;
   fin >> n;
   for (int i = 1; i <= n; i++)
      fin >> v[i];
   fin >> m;
   for (int i = 1; i <= m; i++)
   {
      int a, b;
      fin >> a >> b;
      if (a == 0)
      {
         int l = 1, r = n;
         while (l <= r)
         {
            int p = (r + l) / 2;
            if (b >= v[p])
               l = p + 1;
            else
               r = p - 1;
         }
         if (v[r] == b)
            fout << r << '\n';
         else
            fout << "-1\n";

      }
      else if (a == 1)
      {
         int l = 1, r = n;
         while (l <= r)
         {
            int p = (r + l) / 2;
            if (b >= v[p])
               l = p + 1;
            else
               r = p - 1;
         }
         fout << r << '\n';
      }
      else
      {
         int l = 1, r = n;
         while (l <= r)
         {
            int p = (r + l) / 2;
            if (b > v[p])
               l = p + 1;
            else
               r = p - 1;
         }
         fout << l << '\n';
      }
   }
   fin.close();
   fout.close();
   return 0;
}