unique的作用是“去掉”容器中相邻元素的重复元素(不一定要求数组有序),它会把重复的元素添加到容器末尾(所以数组大小并没有改变),而返回值是去重之后的尾地址
//待离散化数组
vector<int> v1;
for (int i = 0; i < n; i++)cin >> e, v1.push_back(e);
sort(v1.begin(), v1.end());
//unique把数组中重复元素放到数组尾 返回数组尾(没有重复元素)
v1.erase(unique(v1.begin(), v1.end()), v1.end());
查找用二分
l = 0, r = v1.size()-1;
cin >> x;
while (l < r)
{
mid = l + r >> 1;
if (v1[mid] == x)break;
if (v1[mid] > x)r = mid;
else l = mid + 1;
}
cout << v1[mid] << endl;