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;
#define lli long long int
#define debug(a) cout << #a << " = " << a << endl
#define debugsl(a) cout << #a << " = " << a << ", "
#define rep(i,a,b) for(int i = (a); i <= (b); i++)
#define repa(i,a,b) for(int i = (a); i >= (b); i--)
#define pll pair<lli,lli>
#define MAX 5000
//para el vector de orden
#define id second
struct x {
lli x;
lli y;
lli r;
};
lli n;
lli res[MAX+2],vis[MAX+2];
x circulo[MAX+2];
vector<pll> orden;
int main() {
ios_base::sync_with_stdio(false);
cin.tie(NULL);
cin >> n;
rep(i,1,n) {
cin >> circulo[i].x >> circulo[i].y >> circulo[i].r;
orden.push_back({-circulo[i].r, i});
}
sort(orden.begin(), orden.end());
for (auto yo : orden) {
for(auto otro : orden) {
if (vis[otro.id]) continue;
if (otro.id == yo.id) {
res[yo.id] = yo.id;
break;
}
lli a = circulo[yo.id].x - circulo[otro.id].x;
lli b = circulo[yo.id].y - circulo[otro.id].y;
a *= a;
b *= b;
lli c = circulo[yo.id].r + circulo[otro.id].r;
c *= c;
if (c >= (a+b)) {
res[yo.id] = otro.id;
vis[yo.id] = 1;
break;
}
}
}
rep(i,1,n) cout << res[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... |