Cod sursa(job #1539980)

Utilizator CiurezAndreiCiurez Marius-Andrei CiurezAndrei Data 1 decembrie 2015 21:23:31
Problema Cautare binara Scor 100
Compilator cpp Status done
Runda Arhiva educationala Marime 1.02 kb
#include <fstream>
#include <algorithm>

#define DIM 100002

using namespace std;

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

int A[DIM], N, M, x, task, position;

int main()
{
    fin >> N;

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

    fin >> M;

    for(int i = 1; i <= M; i ++)
    {
        fin >> task >> x;

        if(task == 0)
        {
            position = upper_bound(A + 1, A + N + 1, x) - A - 1;
            if (position <= N && position >= 1 && A[position] == x)
            {
                fout << position << '\n';
            }
            else
            {
                fout << "-1\n";
            }
        }
        else
        {
            if(task == 1)
            {
                fout << lower_bound(A + 1, A + N + 1, x + 1) - A - 1 << '\n';
            }
            else
            {
                fout << upper_bound(A + 1, A + N + 1, x - 1) - A << '\n';
            }

        }

    }



    return 0;
}