Cod sursa(job #2065614)

Utilizator MrRobotMrRobot MrRobot Data 13 noiembrie 2017 22:45:16
Problema Cautare binara Scor 10
Compilator cpp Status done
Runda Arhiva educationala Marime 1.31 kb
#include <iostream>
#include <fstream>
using namespace std;

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

int v[100001];

int caut_bin (int st, int dr, int x)
{
    int m = ( st + dr ) / 2;
    if( st == dr )
    {
        if( v[m] <= x )
            return st;
        else
            return st-1;
    }
    if( x < v[m] )
        return caut_bin( st, m-1, x );
    else
    //if( x >= v[m] )
        return caut_bin( m+1, dr, x );


    /*if( x <= v[m] )
        return caut_bin( st, m+1, x );
    else
        return caut_bin( m+1, dr, x );*/
}

int main()
{
    int n, i;
    fin>>n;
    for(i=1; i<=n; i++)
        fin>>v[i];
    int m, q, x, ans;
    fin>>m;
    for(i=1; i<=m; i++)
    {
        fin>>q>>x;
        if(q == 0)
        {
            ans = caut_bin(1, n, x);
            if( v[ans] == x )
                fout << ans << '\n';
            else
                fout<< -1 << '\n';
        }
        else
            if(q == 1)
            {
                ans = caut_bin(1, n, x);
                fout << ans << '\n';
            }
            else
                {
                    ans = caut_bin(1, n, x-1);
                    fout << ans+1 << '\n';
                }

    }
    fin.close();
    fout.close();
    return 0;
}