Cod sursa(job #2476360)

Utilizator MichaelXcXCiuciulete Mihai MichaelXcX Data 18 octombrie 2019 18:27:52
Problema Cautare binara Scor 10
Compilator cpp-64 Status done
Runda Arhiva educationala Marime 0.87 kb
#include <fstream>
#include <algorithm>
#include <vector>

using namespace std;

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

int V[100005];
int N, M, t, y;

int main()
{
    fin >> N;

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

    sort(V + 1, V + N + 1);

    fin >> M;

    for(int i = 0; i < M; ++i) {
        fin >> t >> y;

        if(t == 0) {
            int upp = upper_bound(V + 1, V + N + 1, y) - V - 1;
            if(upp <= N && upp >= 1 && V[upp] == y)
                fout << upp << "\n";
            else
                fout << "-1\n";
        }
        else if(t == 1) {
            int upp = upper_bound(V + 1, V + N + 1, y+1) - V - 1;
            fout << upp << "\n";
        }
        else {
            int low = lower_bound(V + 1, V + N + 1, y-1) - V ;
            fout << low << "\n";
        }
    }
}