#include <bits/stdc++.h>
#pragma GCC optimize ("O3")
#pragma GCC target ("sse4")
using namespace std;
#define int long long int
const int N = 50000 + 10;
const int md = 1e9 + 7;
const int INF = 1e18;
struct node {
int x;
int y;
int c;
int nu;
};
bool cmp(node &t1, node &t2) {
return ((t1.c > t2.c) || (t1.c == t2.c && t1.nu < t2.nu));
}
int sq(int n) {
return (n * n);
}
int32_t main(int32_t argc, char *argv[]) {
ios::sync_with_stdio(false);
cin.tie(nullptr);
int T = 1;
// cin >> T;
while (T--) {
int n;
cin >> n;
if (n <= 5000) {
vector<int> ans(n + 1);
vector<node> a(n + 1);
for (int i = 1; i <= n; i++) {
cin >> a[i].x >> a[i].y >> a[i].c;
a[i].nu = i;
}
sort(a.begin(), a.end(), cmp);
for (int i = 0; i < n; i++) {
if (!ans[a[i].nu]) {
ans[a[i].nu] = a[i].nu;
for (int j = i + 1; j < n; j++) {
if ((sq(a[i].x - a[j].x) + sq(a[i].y - a[j].y)) <= sq(a[i].c + a[j].c) && !ans[a[j].nu]) {
ans[a[j].nu] = a[i].nu;
}
}
}
}
for (int i = 1; i <= n; i++)
cout << ans[i] << " ";
cout << '\n';
}
}
return 0;
}
# | 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... |