Cod sursa(job #2131925)

Utilizator AndreiSorin26012001Cirpici Andrei Sorin AndreiSorin26012001 Data 15 februarie 2018 10:04:48
Problema Cautare binara Scor 0
Compilator cpp Status done
Runda Arhiva educationala Marime 1.38 kb
#include <bits/stdc++.h>

using namespace std;

ifstream in("cautbin.in");
ofstream out("cautbin.out");

int arr[100005];
int n, m;
int t, x;
int st, dr, mid;

int main()
{

    in>>n;
    for( int i = 1; i <= n; i++ )
        in>>arr[i];

    in>>m;
    for( int i = 1; i <= m; i++ )
    {
        in>>t>>x;

        if( t == 0 )
        {
            st = 1;
            dr = n;
            while( st <= dr )
            {
                mid = st + (dr - st)/2;

                if( arr[mid] <= x )
                    st = mid + 1;
                else
                    dr = mid - 1;
            }

            out<<dr<<"\n";
        }

        if( t == 1 )
        {
            st = 1;
            dr = n;
            while( st <= dr )
            {
                mid = st + (dr - st)/2;

                if( arr[mid] <= x )
                    st = mid + 1;
                else
                    dr = mid -1;
            }

            out<<dr<<"\n";
        }

        if( t == 2 )
        {
            st = 1;
            dr = n;
            while( st <= dr )
            {
                mid = st + (dr - st)/2;

                if( arr[mid] < x )
                    st = mid + 1;
                else
                    dr = mid - 1;
            }

            out<<st<<"\n";
        }
    }

    return 0;
}