#include <iostream>
#include <algorithm>
#include <vector>
using namespace::std;
int nearest(vector<int> a, int x)
{
auto r = equal_range(a.begin(), a.end(), x);
if (r.first == a.begin()) return a[0];
if (r.first == a.end()) return a[a.size() - 1];
return x - r.first[-1] <= r.first[0] - x ? r.first[-1] : r.first[0];
}
int main(void)
{
vector<int> a = {98, 100, 198, 200, 250, 298};
cout << 50 << " -> " << nearest(a, 50) << endl;
cout << 195 << " -> " << nearest(a, 195) << endl;
return 0;
}
I2luY2x1ZGUgPGlvc3RyZWFtPgojaW5jbHVkZSA8YWxnb3JpdGhtPgojaW5jbHVkZSA8dmVjdG9yPgoKdXNpbmcgbmFtZXNwYWNlOjpzdGQ7CgppbnQgbmVhcmVzdCh2ZWN0b3I8aW50PiBhLCBpbnQgeCkKewogICAgYXV0byByID0gZXF1YWxfcmFuZ2UoYS5iZWdpbigpLCBhLmVuZCgpLCB4KTsKICAgIGlmIChyLmZpcnN0ID09IGEuYmVnaW4oKSkgcmV0dXJuIGFbMF07CiAgICBpZiAoci5maXJzdCA9PSBhLmVuZCgpKSByZXR1cm4gYVthLnNpemUoKSAtIDFdOwogICAgcmV0dXJuIHggLSByLmZpcnN0Wy0xXSA8PSByLmZpcnN0WzBdIC0geCA/IHIuZmlyc3RbLTFdIDogci5maXJzdFswXTsKfQoKaW50IG1haW4odm9pZCkKewogICAgdmVjdG9yPGludD4gYSA9IHs5OCwgMTAwLCAxOTgsIDIwMCwgMjUwLCAyOTh9OwoKICAgIGNvdXQgPDwgNTAgPDwgIiAtPiAiIDw8IG5lYXJlc3QoYSwgNTApIDw8IGVuZGw7CiAgICBjb3V0IDw8IDE5NSA8PCAiIC0+ICIgPDwgbmVhcmVzdChhLCAxOTUpIDw8IGVuZGw7CgogICAgcmV0dXJuIDA7Cn0=