Cod sursa(job #1683772)

Utilizator hopingsteamMatraguna Mihai-Alexandru hopingsteam Data 10 aprilie 2016 16:09:36
Problema Cautare binara Scor 0
Compilator cpp Status done
Runda Arhiva educationala Marime 1.21 kb
#include    <algorithm>
#include    <iostream>
#include    <fstream>
#include    <vector>

using namespace std;

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

const int NLIM = 100005;

int V[NLIM];
int N, M;

void Read()
{
    fin >> N;
    for(int i = 1; i <= N; i++)
        fin >> V[i];
}

void Solve()
{
    fin >> M;
    for(int i = 1; i <= M; i++)
    {
        int _case, x, result;
        fin >> _case >> x;
        
        if(_case == 0)
        {   
            result = upper_bound(V+1, V+N+1, x) - V - 1;
            if(result >= 0 && result < N)
            {//Daca pozitia apartine vectorului
                if(V[result] == x)
                {//Daca este exact ceea ce cautam
                    fout << result << "\n";
                }
            }
            else
                fout << "-1\n";
        }
        if(_case == 1)
        {
            result = lower_bound(V+1, V+N+1, x+1) - V - 1;
            fout << result << "\n";
        }
        if(_case == 2)
        {
            result = upper_bound(V+1, V+N+1, x-1) - V;
            fout << result << "\n";
        }
    }
}

int main()
{
    Read();
    Solve();
    return 0;
}