shushus

Спринт 6. Не худший случай.

Dec 25th, 2022
216
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C++ 1.02 KB | None | 0 0
  1. #include <algorithm>
  2. #include <cmath>
  3. #include <cstdint>
  4. #include <iostream>
  5. #include <random>
  6. #include <vector>
  7.  
  8. using namespace std;
  9.  
  10. int EffectiveCount(const vector<int>& v, int n, int i) {
  11.     if (size(v)*(i + 1)/(n + 1) > log2(size(v))){
  12.         cout << "Using upper_bound"s << endl;
  13.         return upper_bound(begin(v), end(v), i) - begin(v);
  14.     } else {
  15.         cout << "Using find_if"s << endl;
  16.         return find_if(begin(v), end(v), [i](int var){return i < var;}) - begin(v);
  17.     }
  18.     return 0;
  19. }
  20.  
  21. int main() {
  22.     static const int NUMBERS = 1000000;
  23.     static const int MAX = 1000000;
  24.  
  25.     mt19937 r;
  26.     uniform_int_distribution<int> uniform_dist(0, MAX);
  27.  
  28.     vector<int> nums;
  29.     for (int i = 0; i < NUMBERS; ++i) {
  30.         int random_number = uniform_dist(r);
  31.         nums.push_back(random_number);
  32.     }
  33.     sort(nums.begin(), nums.end());
  34.  
  35.     int i;
  36.     cin >> i;
  37.     int result = EffectiveCount(nums, MAX, i);
  38.     cout << "Total numbers before "s << i << ": "s << result << endl;
  39. }
Advertisement
Add Comment
Please, Sign In to add comment