#include <bits/stdc++.h>
using namespace std;
using ll = long long;
#define ff first
#define ss second
#define pii pair<int, int>
int main() {
ios::sync_with_stdio(false); cin.tie(nullptr);
int n;
cin >> n;
pii p1[n + 1], p2[n + 1];
vector<int> x(n + 1), r(n + 1);
for (int i = 1; i <= n; i++) {
int y;
cin >> x[i] >> y >> r[i];
p1[i] = {r[i], i};
p2[i] = {x[i], i};
}
sort(p1 + 1, p1 + n + 1, [&](pii x, pii y) {
return (x.ff > y.ff || (x.ff == y.ff && x.ss < y.ss));
});
sort(p2 + 1, p2 + n + 1);
vector<int> ans(n + 1);
for (int i = 1; i <= n; i++) {
int ind = p1[i].ss;
if (ans[ind]) continue;
int L = lower_bound(p2 + 1, p2 + n + 1, pii{x[ind], ind}) - p2, R = L;
while (0 < L && !ans[L] && x[ind] - p2[L].ff <= r[ind]) {
ans[p2[L].ss] = ind;
L--;
}
while (R <= n && !ans[R] && p2[R].ff - x[ind] <= r[ind]) {
ans[p2[R].ss] = ind;
R++;
}
}
for (int i = 1; i <= n; i++)
cout << ans[i] << ' ';
}
# | Verdict | Execution time | Memory | Grader output |
---|
Fetching results... |
# | Verdict | Execution time | Memory | Grader output |
---|
Fetching results... |
# | Verdict | Execution time | Memory | Grader output |
---|
Fetching results... |
# | Verdict | Execution time | Memory | Grader output |
---|
Fetching results... |
# | Verdict | Execution time | Memory | Grader output |
---|
Fetching results... |
# | Verdict | Execution time | Memory | Grader output |
---|
Fetching results... |