136. 邻值查找set lower_bound
Posted 辉小歌
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了136. 邻值查找set lower_bound相关的知识,希望对你有一定的参考价值。
set的lower_bound没找到返回的迭代器就是 st.end()
#include<bits/stdc++.h>
using namespace std;
const int N=1e5+10;
int a[N],n;
map<int,int>mp;
int main(void)
cin>>n;
for(int i=1;i<=n;i++) cin>>a[i],mp[a[i]]=i;
set<int>st; st.insert(a[1]);
for(int i=2;i<=n;i++)
auto temp=st.lower_bound(a[i]);
if(temp==st.end())//都比它小
temp--;
cout<<a[i]-(*temp)<<" "<<mp[*temp]<<'\\n';
else
if(temp==st.begin())//都比它大
cout<<*temp-a[i]<<" "<<mp[*temp]<<'\\n';
else//有比他小的,有比他大的
int temp1=*temp;
temp--;
int temp2=*temp;
if(a[i]-temp2<=temp1-a[i]) cout<<a[i]-temp2<<" "<<mp[temp2]<<'\\n';
else cout<<temp1-a[i]<<" "<<mp[temp1]<<'\\n';
st.insert(a[i]);
return 0;
以上是关于136. 邻值查找set lower_bound的主要内容,如果未能解决你的问题,请参考以下文章
关于set的lower_bound 和 std的lower_bound