This submission is migrated from previous version of oj.uz, which used different machine for grading. This submission may have different result if resubmitted.
#include <bits/stdc++.h>
using namespace std;
typedef long long ll;
const int MAXN = 5005;
int ans[MAXN];
ll xv[MAXN], yv[MAXN], rv[MAXN];
bool die[MAXN], cross[MAXN][MAXN];
ll sq(ll x){
return x * x;
}
int main(){
ios_base::sync_with_stdio(false);
cin.tie(0); cout.tie(0);
int nums; cin >> nums;
for (int i = 0; i < nums; i++) cin >> xv[i] >> yv[i] >> rv[i];
for (int i = 0; i < nums; i++){
cross[i][i] = 1;
for (int j = i + 1; j < nums; j++) cross[i][j] = cross[j][i] = ((sq(xv[i] - xv[j]) + sq(yv[i] - yv[j])) <= sq(rv[i] + rv[j]));
}
while (true){
int ind = -1; ll sz = 0;
for (int i = 0; i < nums; i++)
if (!die[i] && rv[i] > sz){
sz = rv[i];
ind = i;
}
if (ind == -1) break;
for (int i = 0; i < nums; i++)
if (!die[i] && cross[i][ind]){
ans[i] = ind + 1;
die[i] = 1;
}
}
for (int i = 0; i < nums; 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... |