社区讨论

邻值查找

灌水区参与者 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 条回复,欢迎继续交流。

正在加载回复...