#include <bits/stdc++.h>
#define int long long
using namespace std;
const int N=300010;
int n, x[N], y[N], r[N], ans[N];
map<pair<int, int>, vector<int>> vec;
set<int> st;
signed main() {
ios_base::sync_with_stdio(0); cin.tie(0);
cin>>n;
for(int i=1; i<=n; i++) {
cin>>x[i]>>y[i]>>r[i], st.insert(i);
vec[{x[i]/r[i], y[i]/r[i]}].push_back(i);
}
while(!st.empty()) {
int k=(*st.begin());
for(int dx=-2; dx<=2; dx++) for(int dy=-2; dy<=2; dy++) if(vec.find({x[k]/r[k]+dx, y[k]/r[k]+dy})!=vec.end()) {
vector<int> tmp, tmp2;
swap(tmp, vec[{x[k]/r[k]+dx, y[k]/r[k]+dy}]);
for(int i:tmp) {
if((x[i]-x[k])*(x[i]-x[k])+(y[i]-y[k])*(y[i]-y[k])<=4*r[1]*r[1]) ans[i]=k, st.erase(i);
else tmp2.push_back(i);
}
swap(tmp2, vec[{x[k]/r[k]+dx, y[k]/r[k]+dy}]);
}
}
for(int i=1; i<=n; i++) cout<<ans[i]<<" ";
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... |