社区讨论
邻值查找
灌水区参与者 2已保存回复 1
讨论操作
快速查看讨论及其快照的属性,并进行相关操作。
- 当前回复
- 1 条
- 当前快照
- 1 份
- 快照标识符
- @m3zh6md7
- 此快照首次捕获于
- 2024/11/27 13:58 去年
- 此快照最后确认于
- 2025/11/04 13:50 4 个月前
代码:
CPP#include<bits/stdc++.h>
#define int long long
using namespace std;
int n, x;
map<int, int> m;
signed main()
{
ios::sync_with_stdio(false); cin.tie(nullptr);
cin >> n;
for (int i = 1, x; i <= n; i ++ ){
cin >> x;
if(i == 1){
m[x] = 1;
continue;
}
if(m.count(x) == 0){
m[x] = i;
auto it = m.find(x), a = it, b = it;
int minn = INT_MAX, p = -1;
if(it != --m.end())
minn = abs(x - (++a)->first), p = a->second;
if(it != m.begin() && minn > (--b)->first - x)
minn = abs(x - b->first), p = b->second;
cout << minn << ' ' << p<< '\n';
}else{
cout << 0 << ' ' << m.find(x)->second;
}
}
return 0;
}
回复
共 1 条回复,欢迎继续交流。
正在加载回复...