View difference between Paste ID: tkEQQXDP and q9hb1PmY
SHOW: | | - or go back to the newest paste.
1
#include <set>
2
#include <iostream>
3
#include <algorithm>
4
5
using namespace std;
6
7
set<int>::const_iterator FindNearestElement(const set<int>& numbers, int border) {
8
    // set<int>::const_iterator — тип итераторов для константного множества целых чисел
9
    if(numbers.empty()){
10
        return numbers.end();
11
    }
12
    auto helper = numbers.lower_bound(border);
13
    if(border>*prev(numbers.end())){
14
        return prev(numbers.end());
15
    }
16
    if (border==*helper || numbers.begin()==helper) {
17
        return helper;
18
    }
19
    if (*helper-border >= border - *prev(helper)) {
20
        return prev(helper, *helper-border);
21
    }
22
    return helper;
23
}
24
int main() {
25
    set<int> numbers = {1, 4, 6};
26
    cout << *FindNearestElement(numbers, 0) << " " << *FindNearestElement(numbers, 3) << " "
27
         << *FindNearestElement(numbers, 5) << " " << *FindNearestElement(numbers, 6) << " "
28
         << *FindNearestElement(numbers, 100) << endl;
29
    set<int> empty_set;
30
    cout << (FindNearestElement(empty_set, 8) == end(empty_set)) << endl;
31
    return 0;
32
}