rt,不知道为啥只有 18 分。
#include <bits/stdc++.h>
#define int long long
using namespace std;
struct node {
int x,id;
bool operator < (const node& y) const {
return x > y.x;
}
} a[200005];
map<int,int> ans;
int cur[200005];
int aaaa[200005];
signed main() {
int n,k; cin >> n >> k;
for(int i = 1;i <= n;i++) cin >> a[i].x, a[i].id = i;
bool ccc = true;
for(int i = 1;i < n;i++) {
if(a[i].x != a[i+1].x) ccc = false;
}
if(ccc) {
for(int i = 1;i <= n;i++) {
cout << "0 ";
}
cout << endl; return 0;
}
sort(a+1,a+n+1); int m = 0;
for(int i = 1;i <= n;i++) {
if(a[i].x != a[i-1].x) cur[++m] = a[i].x;
}
ans[cur[1]] = 0;
int sum = (cur[1] > (cur[2] + k) ? 0 : 1);
for(int i = 2;i < m;i++) {
ans[cur[i]] = sum;
sum += (cur[i] > (cur[i+1] + k) ? 0 : 1);
}
ans[cur[m]] = sum;
for(int i = 1;i <= n;i++) aaaa[a[i].id] = ans[a[i].x];
for(int i = 1;i <= n;i++) cout << aaaa[i] << ' ';
return 0;
}
玄关