Cod sursa(job #2779924)

Utilizator MorarCezarMorar Cezar MorarCezar Data 5 octombrie 2021 15:13:27
Problema Cautare binara Scor 100
Compilator cpp-64 Status done
Runda Arhiva educationala Marime 1.49 kb
#include <fstream>
using namespace std;
ifstream fin("cautbin.in");
ofstream fout("cautbin.out");
const int N = 100000;
int v[ N ];

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

                if ( v[ mij + 1 ] > x )
                    dr = mij;
                else
                    st = mij + 1;
            }
            if ( x == v [ st ] )
                fout << st + 1 << "\n";
            else
                fout << "-1\n";
        }
        else if ( c == 1 ){

            st = 0;
            dr = n - 1;

            while ( st != dr ) {

                mij = ( dr + st ) / 2;

                if ( v[ mij + 1 ] > x )
                    dr = mij;
                else
                    st = mij + 1;

            }

            fout << st + 1 << "\n";
        }

        else if ( c == 2 ){

            st = 0;
            dr = n - 1;

            while ( st != dr ) {

                mij = ( dr + st ) / 2;

                if ( v[ mij ] >= x )
                    dr = mij;
                else
                    st = mij + 1;

            }

            fout << st + 1 << "\n";
        }

    }

    return 0;
}