Lower Bound-STL

Sort by

recency

|

431 Discussions

|

  • + 0 comments

    My C++ code 😎😁

    #include <cmath>
    #include <cstdio>
    #include <vector>
    #include <iostream>
    #include <algorithm>
    using namespace std;
    
    
    bool isHereElement(const std::vector<int>& arr, const int el, int* index) {
        auto it = std::lower_bound(arr.begin(), arr.end(), el);
        if (it != arr.end() && *it == el) {
            *index = std::distance(arr.begin(), it);
            return true;
        }
        return false;
    }
    
    int main() {
        int nbrInt = 0;
        std::cin >> nbrInt;
        std::vector<int> array(nbrInt, 0);
    
        for (int i = 0; i < nbrInt; i++) {
            std::cin >> array[i];
        }
        std::sort(array.begin(), array.end());
    
        int queries = 0;
        std::cin >> queries;
        std::vector<int> queriesArray(queries, 0);
    
        for (int i = 0; i < queries; i++) {
            std::cin >> queriesArray[i];
        }
    
        int index = 0;
        for (int i = 0; i < queriesArray.size(); i++) {
            if (isHereElement(array, queriesArray[i], &index)) {
                std::cout << "Yes " << index + 1 << std::endl;
            } else {
                auto indexLowerBound = std::lower_bound(array.begin(), array.end(), queriesArray[i]);
                std::cout << "No " << std::distance(array.begin(), indexLowerBound) + 1 << std::endl;
            }
        }
        return 0;
    }
    
  • + 0 comments

    I Dont know why everyone is confusing, the most simplest answer..

    int main() { /* Enter your code here. Read input from STDIN. Print output to STDOUT */ int n ; cin >> n; vectornums(n); for(int i = 0;i> nums[i]; }

    int q;
    cin >> q;
    while(q--)
    {
        int target;
        cin >> target;
        auto it = lower_bound(nums.begin(),nums.end(),target);
        if(*it == target)
        {
            cout << "Yes " <<  it-nums.begin()+1 << endl;
        }
        else {
            cout << "No " << it-nums.begin()+1<<endl;
        }
    }
    return 0;
    

    }

  • + 0 comments
    #include <cmath>
    #include <cstdio>
    #include <vector>
    #include <iostream>
    #include <algorithm>
    using namespace std;
    
    void read_input();
    void execute_queries();
    
    int n; //Amount of Numbers
    int q; //Amount of queries
    vector<int> intVector;
    vector<int> queries;
    
    int main() {
        read_input();
        execute_queries();
        return 0;
    }
    
    void read_input() {
        cin >> n;
        intVector.reserve(n);
        int value;
    
        for(int i = 0; i < n; i++) {
            cin >> value;
            intVector.emplace_back(value);
        }
        
        cin >> q;
        queries.reserve(q);
        
        for(int i = 0; i < q; i++){
            int value;
            cin >> value;
            queries.emplace_back(value); 
        }
    }
    
    void execute_queries() {
        for (auto it : queries) {
            auto lowIndex = lower_bound(intVector.begin(), intVector.end(), it);
            if(intVector[lowIndex - intVector.begin()] == it){
                cout << "Yes " << (lowIndex - intVector.begin() + 1) << endl;
            }
            else {
                cout << "No " << (lowIndex - intVector.begin() + 1) << endl;
            }
        }
    }
    
  • + 0 comments

    // cleanest solution IMO

    int main() {
        int n, q; std::cin >> n;
        std::vector<int> vec(n);
        for (auto &i : vec) std::cin >> i;
        
        std::cin >> q;
        for (int i = 0; i < q; i++) {
            int n; std::cin >> n;
            auto it = std::lower_bound(vec.begin(), vec.end(), n);
            if (*it == n)
                std::cout << "Yes ";
            else
                std::cout << "No ";
            std::cout << (it - vec.begin()) + 1 << '\n';  
        }
        
        return 0;
    }
    
  • + 0 comments

    This one worked for me.

    int main() { /* Enter your code here. Read input from STDIN. Print output to STDOUT */
    int N{0}; cin >> N;

    vector<int>vec;
    vec.reserve(N);
    
    int num;
    for(int i{0}; i<N; ++i){
        cin >> num;       
        vec.push_back(num);        
    }
    
    int Q{0};
    cin >> Q;
    vector<int>query;
    query.reserve(Q);
    
    for(int i{0}; i<Q; ++i){
        cin >> num;       
        query.push_back(num);        
    }
    
    int Y{0}, index{0};    
    for(int i{0}; i<Q; ++i){
        Y = query.at(i);
    
        auto it = lower_bound(vec.begin(), vec.end(), Y);
        index = distance(vec.begin(), it);
    
        if(vec[index] == Y)
            cout << "Yes " << (index + 1) << endl; 
        else
             cout << "No " << (index + 1) << endl; 
    }
    
    return 0;
    

    }