Cod sursa(job #1375857)

Utilizator DobosDobos Paul Dobos Data 5 martie 2015 14:45:39
Problema Cautare binara Scor 0
Compilator cpp Status done
Runda Arhiva educationala Marime 1.22 kb
#include <fstream>
using namespace std;
ifstream f("cautbin.in");
ofstream g("cautbin.out");
int v[1000],n;



int binar(int val)
{
    int i, step;
    for (step = 1; step < n; step <<= 1);
    for (i = 0; step; step >>= 1)
        if (i + step < n && v[i + step] <= val)
            i += step;
    return i;
}
int main()
{
    int i,x,p,k,m;
    f>>n;
    for(i = 0; i < n ; i++)
        f>>v[i];
    f>>m;
    for(i = 1; i<= m; i++)
    {
        f>>k>>x;
        p = binar(x);
        if(k == 0)
        {
            if (v[p] != x)
                g<<-1<<"\n";
            else
            {
                while(v[p] == x)
                    p++;
                g<<p<<"\n";
            }
        }
        if(k == 1)
        {
            if(v[p] != x)
                g<<p+1<<" ";
            else
            {
                while(v[p] == x)
                    p++;
                g<<p<<"\n";
            }
        }
        if(k == 2)
        {
            if(v[p] != x)
             g<<p+2<<" ";
             else
            {
                while(v[p] == x)
                    p--;
                g<<p+2<<" ";
            }

        }

    }



    return 0;
}