rt,这份代码跑过了
#include<bits/stdc++.h>
using namespace std;
const int N=1e5+10;
int a[N];
vector<int> g[N];
int in[N];
signed main() {
ios::sync_with_stdio(0);
cin.tie(0),cout.tie(0);
int n,k;
cin>>n>>k;
for(int i=1;i<=n;i++) cin>>a[i];
int p1=1,p2=1;
for(int i=2;i<=n;i++)
{
if(a[i]-a[p1]>k) g[p1].push_back(i),in[i]++;
if(a[p2]-a[i]>k) g[p2].push_back(i),in[i]++;
if(a[i]<=a[p1]) p1=i;
if(a[i]>=a[p2]) p2=i;
}
priority_queue<pair<int,int>,vector<pair<int,int> >,greater<pair<int,int> > > q;
for(int i=1;i<=n;i++)
if(!in[i])
q.push(make_pair(a[i],i));
while(q.size())
{
int x=q.top().second;
q.pop();
cout<<a[x]<<'\n';
for(int to:g[x])
{
in[to]--;
if(!in[to]) q.push(make_pair(a[to],to));
}
}
return 0;
}