#include <bits/stdc++.h>
using namespace std;
#define int long long
signed main(){
int N;
cin>>N;
vector<int> X(N),Y(N),R(N);
for(int i=0;i<N;i++){
cin>>X[i]>>Y[i]>>R[i];
X[i] += (int)(1e9)+2*R[i];
Y[i] += (int)(1e9)+2*R[i];
}
vector<int> A(N,N+1);
vector<pair<int,int>> S(N);
for(int i=0;i<N;i++) S[i] = {R[i],N-1-i};
sort(S.rbegin(),S.rend());
int n = ((int)(2e18)/(2*R[0]))+10;
map<int,set<int>> m;
vector<int> I(N);
for(int i=0;i<N;i++){
m[X[i]*n+Y[i]].insert(i);
I[i] = X[i]*n+Y[i];
}
for(int i=0;i<N;i++){
int ind = N-1-S[i].second;
if(A[ind] != N+1) continue;
int pos = I[ind];
for(int x:m[pos]){
if((X[ind]-X[x])*(X[ind]-X[x])+(Y[ind]-Y[x])*(Y[ind]-Y[x]) <= (R[ind]+R[x])*(R[ind]+R[x])){
m[pos].erase(x);
A[x] = ind+1;
}
}
for(int x:m[pos+1]){
if((X[ind]-X[x])*(X[ind]-X[x])+(Y[ind]-Y[x])*(Y[ind]-Y[x]) <= (R[ind]+R[x])*(R[ind]+R[x])){
m[pos+1].erase(x);
A[x] = ind+1;
}
}
for(int x:m[pos-1]){
if((X[ind]-X[x])*(X[ind]-X[x])+(Y[ind]-Y[x])*(Y[ind]-Y[x]) <= (R[ind]+R[x])*(R[ind]+R[x])){
m[pos-1].erase(x);
A[x] = ind+1;
}
}
for(int x:m[pos+n]){
if((X[ind]-X[x])*(X[ind]-X[x])+(Y[ind]-Y[x])*(Y[ind]-Y[x]) <= (R[ind]+R[x])*(R[ind]+R[x])){
m[pos+n].erase(x);
A[x] = ind+1;
}
}
for(int x:m[pos+n+1]){
if((X[ind]-X[x])*(X[ind]-X[x])+(Y[ind]-Y[x])*(Y[ind]-Y[x]) <= (R[ind]+R[x])*(R[ind]+R[x])){
m[pos+n+1].erase(x);
A[x] = ind+1;
}
}
for(int x:m[pos+n-1]){
if((X[ind]-X[x])*(X[ind]-X[x])+(Y[ind]-Y[x])*(Y[ind]-Y[x]) <= (R[ind]+R[x])*(R[ind]+R[x])){
m[pos+n-1].erase(x);
A[x] = ind+1;
}
}
for(int x:m[pos-n]){
if((X[ind]-X[x])*(X[ind]-X[x])+(Y[ind]-Y[x])*(Y[ind]-Y[x]) <= (R[ind]+R[x])*(R[ind]+R[x])){
m[pos-n].erase(x);
A[x] = ind+1;
}
}
for(int x:m[pos-n+1]){
if((X[ind]-X[x])*(X[ind]-X[x])+(Y[ind]-Y[x])*(Y[ind]-Y[x]) <= (R[ind]+R[x])*(R[ind]+R[x])){
m[pos-n+1].erase(x);
A[x] = ind+1;
}
}
for(int x:m[pos-n-1]){
if((X[ind]-X[x])*(X[ind]-X[x])+(Y[ind]-Y[x])*(Y[ind]-Y[x]) <= (R[ind]+R[x])*(R[ind]+R[x])){
m[pos-n-1].erase(x);
A[x] = ind+1;
}
}
}
for(int i=0;i<N;i++) cout<<A[i]<<' ';
cout<<endl;
}
# |
결과 |
실행 시간 |
메모리 |
Grader output |
1 |
Runtime error |
0 ms |
340 KB |
Execution killed with signal 11 |
2 |
Halted |
0 ms |
0 KB |
- |
# |
결과 |
실행 시간 |
메모리 |
Grader output |
1 |
Runtime error |
565 ms |
119392 KB |
Execution killed with signal 11 |
2 |
Halted |
0 ms |
0 KB |
- |
# |
결과 |
실행 시간 |
메모리 |
Grader output |
1 |
Runtime error |
1 ms |
340 KB |
Execution killed with signal 11 |
2 |
Halted |
0 ms |
0 KB |
- |
# |
결과 |
실행 시간 |
메모리 |
Grader output |
1 |
Runtime error |
618 ms |
119356 KB |
Execution killed with signal 11 |
2 |
Halted |
0 ms |
0 KB |
- |
# |
결과 |
실행 시간 |
메모리 |
Grader output |
1 |
Runtime error |
0 ms |
340 KB |
Execution killed with signal 11 |
2 |
Halted |
0 ms |
0 KB |
- |
# |
결과 |
실행 시간 |
메모리 |
Grader output |
1 |
Runtime error |
0 ms |
340 KB |
Execution killed with signal 11 |
2 |
Halted |
0 ms |
0 KB |
- |