能否添加一个subtask作Hack数据
查看原帖
能否添加一个subtask作Hack数据
374330
yimuhua楼主2024/1/11 14:28

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;
}
2024/1/11 14:28
加载中...