Cod sursa(job #1355247)

Utilizator Alex1199Alex Bercea Alex1199 Data 22 februarie 2015 15:43:22
Problema Cautare binara Scor 10
Compilator cpp Status done
Runda Arhiva educationala Marime 1.12 kb
#include <fstream>
using namespace std;
ifstream f("cautbin.in");
ofstream g("cautbin.out");
int64_t a[100009], n, x, r, m, c;
bool t=true;
int64_t caut(int s, int d,int c)
{   if(s>d) {t=false; return s;}
   else
  {
    int64_t m=(s+d)/2;
    if(a[m]==c) return m;
    else
        {
           if(a[m]<c) return caut(m+1,d,c);
                 else return caut(s,m-1,c);
        }
  }
}
int main()
{
   f>>n;
   for(int64_t i=1;i<=n;i++){f>>a[i];} f>>m;
   for(int64_t i=1;i<=m;i++)
   {
       f>>c>>x;
     if(!c)
     {
         r=caut(1,n,x);
         if (t) {  while (a[r+1]==x)
                           r++;
                          g<<r<<'\n';}
          else g<<-1<<'\n';
     }
     if(c==1)
     {
         r=caut(1,n,x);
         if (t) {  while (a[r+1]==x)
                           r++;
                          g<<r<<'\n';}
          else g<<r-1<<'\n';
     }
     if(c==2)
     {
         r=caut(1,n,x);
         if (t) {  while (a[r-1]==x)
                           r--;
                          g<<r<<'\n';}
          else g<<r<<'\n';
     }
   }
    return 0;
}