map::lower_bound(key):返回map中第一个大于或等于key的迭代器指针
map::upper_bound(key):返回map中第一个大于key的迭代器指针
一直搞不清判断和返回值怎么弄,比较迷。
lower_bound,二分查找求下界,就是当ans存在是返回它第一个出现的位置。
int lower_bound(int k,int L,int R)
{
int l=L,r=R;
while(l<r)
{
int mid=(l+r)/2;
if(a[mid]>=k)
r=mid;
else
l=mid+1;
}
return l;
}
upper_bound
int upper_bound(int k,int L,int R)
{
int l=L,r=R;
while(l<r)
{
int mid=(l+r)/2;
if(a[mid]<=k)
l=mid+1;
else
r=mid;
}
return l;
}