Cod sursa(job #774486)

Utilizator luckyme91wiz kid luckyme91 Data 5 august 2012 03:12:17
Problema Cautare binara Scor 0
Compilator cpp Status done
Runda Arhiva educationala Marime 1.42 kb
#include <fstream>

using namespace std;
int x[100001];
int begin, end, n, mid;
 ofstream out ("cautbin.out", ofstream::out);

void solve (int y, int s) {
    begin = 0, end = n - 1;
    while (end - begin > 1)
    {
        mid = begin + (end - begin)/2;
        if (y == 0)
        {
            if (x[mid] > s)
                end = mid - 1;
            else
                begin = mid;
        }
        if (y == 1)
        {
            if (x[mid] > s)
                end = mid - 1;
            else
                begin = mid;
        }

        if (y == 2)
        {
            if (x[mid] < s)
                begin = mid + 1;
            else
                end = mid;
        }
    }
    if (y == 0)
    {
        if (x[begin + 1] == s)
            out << begin + 2 << endl;
        else if (x[begin] == s)
                out << begin + 1 << endl;
             else 
                out << -1 << endl;
    }
    else if (y == 1)
    {
         if (x[begin + 1] == s)
            out << begin + 2 << endl;
        else out << begin + 1 << endl;
    }
    else if (y == 2)
    {
        if (x[begin] == s)
            out << begin + 1 << endl;
            else out << begin + 2 << endl;
    }

}


int main () {
    int q, y, s;
    ifstream in ("cautbin.in", ifstream::in);


    in >> n;
    for (int i = 0; i < n; i++)
    {
        in >> x[i];
    }
    in >> q;
    while (q--)
    {
        in >> y >> s;
        solve (y, s);
    }
}