Cod sursa(job #2028414)

Utilizator HumikoPostu Alexandru Humiko Data 27 septembrie 2017 21:14:31
Problema Cautare binara Scor 0
Compilator cpp Status done
Runda Arhiva educationala Marime 1.26 kb
#include <fstream>

using namespace std;

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

int v[100001], mid;

int bin_search(int low, int high, int key)
{
    if ( low <= high )
    {
        mid = low + (high - low)/2;
        if ( v[mid] < key )
            bin_search (mid+1, high, key);
        else
        {
            if ( v[mid] > key )
                bin_search (low, high, key);
            else
                return mid;
        }

    }
    return -1;
}

int main()
{
    int n, m;
    fin>>n;
    for ( int i = 1; i <= n; ++i )
        fin>>v[i];
    fin>>m;
    while (m--)
    {
        int y, x;
        fin>>y>>x;
        if ( y == 0 )
        {
            bin_search(1, n, x);
            while ( v[mid+1] == x )
                mid++;
            fout<<mid<<'\n';
        }
        else
        {
            if ( y == 1 )
            {
                bin_search(1, n, x);
                while ( v[mid+1] == x )
                    mid++;
                fout<<mid<<'\n';
            }
            else
            {
                bin_search(1, n, x);
                while ( v[mid-1] == x )
                    mid--;
                fout<<mid<<'\n';
            }
        }
    }
}