Cod sursa(job #1117590)

Utilizator nataliagutanuNatalia Gutanu nataliagutanu Data 23 februarie 2014 17:48:13
Problema Cautare binara Scor 0
Compilator cpp Status done
Runda Arhiva educationala Marime 1.75 kb
#include<fstream>

using namespace std;
int v[1000000],q[1000000];
int main()
{
    ifstream f ("cautbin.in");
    ofstream g ("cautbin.out");
    int x,n, i, j, left, right, mid, res,m;
    f >> n;
    for (i=1; i<=n; i++) f >> v[i];
    f >> m;
    for (j=1; j<=m; j++)
    {
        f >> q[j];
        f >> x;
        if (q[j] == 0)
        {
            res = -1;
            right = n;
            left = 1;
            while (left <= right)
            {
                    mid = (left+right) / 2;
                if (v[mid] == x)
                    {
                    res = mid;
                    left = mid + 1;
                    }
                if (v[mid] < x) left = mid + 1;
                if (v[mid] > x) right = mid - 1;
            }
            g << res << endl;
        }

        res=-1;
        left = 1;
        right = n;

        if (q[j] == 1)
        {
            while (left <= right)
            {
                mid = (left+right)/2;
                if (v[mid] <= x )
                {
                    left = mid + 1;
                    res = mid ;
                }
                if (v[mid] > x)
                    right = mid - 1;
            }

        g << res << endl;
        }
        res=-1;
        left = 1;
        right = n;
        if (q[j] == 2)
        {
            while (left <= right)
            {
                mid = (left+right)/2;
                if (v[mid] >= x )
                {
                    right = mid - 1;
                    res = mid;
                }
                if (v[mid] < x)
                {
                    left = mid + 1;
                }
            }
        g << res;
        }
    }
    return 0;
}