Cod sursa(job #2640352)

Utilizator ZahaZaharie Stefan Zaha Data 6 august 2020 10:09:08
Problema Cautare binara Scor 100
Compilator cpp-64 Status done
Runda Arhiva educationala Marime 1.02 kb
#include <fstream>
#include <vector>
#include <algorithm>
using namespace std;

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

vector<int> nums;

int main() {
    int n;
    fin >> n;
    while (n--) {
        int temp;
        fin >> temp;
        nums.emplace_back(temp);
    }

    int m;
    fin >> m;
    while (m--) {
        int type, num;
        fin >> type >> num;

        if (!type) {
            vector<int>::iterator it = upper_bound(nums.begin(), nums.end(), num);
            if (nums[distance(nums.begin(), it) - 1] == num)
                fout << distance(nums.begin(), it) << "\n";
            else
                fout << "-1\n";
        } else if (type == 1) {
            vector<int>::iterator it = upper_bound(nums.begin(), nums.end(), num);
            fout << distance(nums.begin(), it) << "\n";
        } else {
            vector<int>::iterator it = lower_bound(nums.begin(), nums.end(), num);
            fout << distance(nums.begin(), it) + 1 << "\n";
        }
    }
}