Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #include <iostream>
- #include <vector>
- #include <cmath>
- using namespace std;
- /**
- * Finds the vector index of the searched value OR the index of the greatest value less than the searched value.
- *
- * @param vector $haystack An ordered array of integers
- * @param int $needle The element to be found
- * @return int $index The index of the matching element.
- */
- int vector_search(vector<int> haystack, int needle) {
- int start = 0, end = haystack.size() - 1, middle = ceil((start + end) / 2);
- while (end - start > 1) {
- if (haystack[middle] == needle) {
- return middle;
- }
- if (haystack[middle] > needle) {
- end = middle;
- } else {
- start = middle;
- }
- middle = ceil((start + end) / 2);
- }
- if (haystack[end] == needle) {
- return end;
- }
- return start;
- }
- int main() {
- int N;
- vector<int> numbers;
- numbers.reserve(N);
- for (int i = 0; i < N; i++) {
- int value, position;
- cin >> value;
- position = vector_search(numbers, value);
- numbers.insert(position + 1, value);
- }
- for (int i = 0; i < (N - 1); i++) {
- cout << numbers[i] << " ";
- }
- cout << numbers[N - 1] << endl;
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement