Cod sursa(job #2787416)

Utilizator adelina_15InfoAdelina Radoi adelina_15Info Data 23 octombrie 2021 11:31:03
Problema Cautare binara Scor 0
Compilator cpp-64 Status done
Runda Arhiva educationala Marime 1.8 kb
#include <iostream>
#include <fstream>

using namespace std;

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

int sir[102];

int main()
{
    int n, m;
    fin >> n;
    for(int i = 1; i <= n; i++)
        fin >> sir[i];
    fin >> m;
    for(int i = 1; i <= m; i++)
    {
        int x, y;
        fin >> x >> y;
        if(x == 0)
        {
            int st = 1, dr = n;
            int val = -1;
            while(st <= dr)
            {
                int mij = (st+dr) / 2;
                if(sir[mij] <= y)
                {

                    st = mij+1;
                    if(sir[mij] == y)
                    {
                        val = mij;
                    }
                }
                else
                {
                    dr = mij-1;
                }

            }
            fout << val << endl;
        }
        else if(x == 1)
        {
            int st = 1, dr = n;
            int val = -1;
            while(st <= dr)
            {
                int mij = (st+dr) / 2;
                if(sir[mij] <= y)
                {
                    val = mij;
                    st = mij+1;
                }
                else
                {
                    dr = mij-1;
                }


            }
            fout << val << endl;
        }
        else if(x == 2)
        {
            int st = 1, dr = n;
            int val = -1;
            while(st <= dr)
            {
                int mij = (st + dr) / 2;
                if(sir[mij] >= y)
                {
                    val = mij;
                    dr = mij - 1;
                }
                else
                    st = mij + 1;
            }
            fout << val << endl;

        }
    }
    return 0;
}