Cod sursa(job #1373928)

Utilizator DobosDobos Paul Dobos Data 4 martie 2015 21:28:28
Problema Cautare binara Scor 0
Compilator cpp Status done
Runda Arhiva educationala Marime 1.69 kb
#include <iostream>
#include <fstream>
using namespace std;
ifstream f("cautbin.in");
ofstream g("cautbin.out");
int n,m,v[2000];
int cautb(int x)
{
    int li , lf , mij;
    li = 1;
    lf = m;
    while ( li <= lf )
    {
        mij = (li+lf)/2;
        if(v[mij] == x)
        {
            return mij;
        }
        else
        {
            if(v[mij] < x)
                li = mij +1;
            else
                lf = mij-1;
        }
    }
    return mij;
}

int main()
{
    int i,x,p;
    f>>m;
    for(i = 1; i <= m; i++)
        f>>v[i];
   f>> n;

    for( i = 1; i <= n; i++)
    {
        f>> p >>x;
        if(p == 0)
        {
            p = cautb(x);
            if(v[p] != x)
                g<<-1<<"\n";
            else
            {
                while(v[p] == x)
                p++;
            g<<p-1<<"\n";
              }
        }
        if(p == 1)
        {
               p = cautb(x);
               if(v[p] != x)
               {
                   if(v[p] < x)
                    g<< p;
                   else
                    g<<p-1;
               }
            else
            {
                while(v[p] == x)
                p++;
            g<<p-1<<"\n";
              }
        }
                if(p == 2)
        {
               p = cautb(x);
               if(v[p] != x)
               {
                   if(v[p] > x)
                    g<< p;
                   else
                    g<<p-1;
               }
            else
            {
                while(v[p] == x)
                p--;
            g<<p+1<<"\n";
              }
        }


    }


  return 0;
}