Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #include <algorithm>
- #include <cassert>
- #include <iostream>
- #include <vector>
- int get_pos(const std::vector<long> &numbers, long number) {
- // TODO optimize this function
- long l = 0;
- long r = numbers.size() - 1;
- while (l <= r) {
- long m = l + ( (r - l) / 2);
- if (numbers[m] == number) return m+1;
- else
- {
- if (numbers[m] > number) {
- r = m - 1;
- }
- else {
- l = m + 1;
- }
- }
- }
- return -1;
- }
- int main(void) {
- long number_count;
- std::cin >> number_count;
- std::vector<long> numbers(number_count);
- numbers.reserve(number_count);
- for (auto &number:numbers) {
- std::cin >> number;
- }
- assert(std::is_sorted(numbers.begin(), numbers.end()));
- long query_count;
- std::cin >> query_count;
- while (query_count-- > 0) {
- long number;
- std::cin >> number;
- std::cout << get_pos(numbers, number) << " ";
- }
- std::cout << std::endl;
- }
Advertisement
Add Comment
Please, Sign In to add comment