Cod sursa(job #2478407)

Utilizator Rares5000Baciu Rares Rares5000 Data 21 octombrie 2019 23:56:48
Problema Cautare binara Scor 0
Compilator cpp-64 Status done
Runda Arhiva educationala Marime 1.53 kb
#include <iostream>
#include <fstream>

using namespace std;

int a[100001], n, m;

int main()
{
    int mij, st, dr, c, x, i, op;
    ifstream fin("cautbin.in");
    ofstream fout("cautbin.out");
    fin >> n;
    for(i = 1; i <= n; i++)
        fin >> a[i];
    fin >> m;
    for(i = 1; i <= m; i++)
    {
        fin>> op >> x;
        c = -1;
        st = 1;
        dr = n;
        if(op == 0)
        {
            while(st <= dr)
            {
                mij = st + (dr - st) / 2;
                if(a[mij] <= x)
                {
                    c = mij;
                    st = mij + 1;
                }
                else
                    dr = mij - 1;
            }
            fout << c << " \n";
        }
        else if(op == 1)
        {
            while(st <= dr)
            {
                mij = st + (dr - st) / 2;
                if(a[mij] <= x)
                    {
                        c = mij;
                        st = mij + 1;
                    }
               else
                    dr = mij - 1;
            }
            fout << c << " \n";
        }
        else if(op == 2)
        {
            while(st <= dr)
            {
                mij = st + (dr - st) / 2;
                if(a[mij] == x)
                {
                    c = mij;
                    dr = mij - 1;
                }
                else
                    st = mij + 1;
            }
            fout << c << " \n";

        }
    }
    return 0;
}