Submission #399766

#TimeUsernameProblemLanguageResultExecution timeMemory
399766my99nCircle selection (APIO18_circle_selection)C++14
0 / 100
7 ms716 KiB
#include<bits/stdc++.h> using namespace std; struct A { double x, y, r; int i; bool operator < (const A & o) const { if (r == o.r) return i < o.i; return r > o.r; } } cir[5050]; int ans[5010]; int mark[5010]; double dis (pair<int,int> i, pair<int,int> j) { double temp = (i.first - j.first) * (i.first - j.first) + (i.second - j.second) * (i.second - j.second); return sqrt(temp); } bool intersect (A i, A j) { return (dis({i.x, i.y}, {j.x, j.y}) <= i.r+j.r); } int main(){ ios_base::sync_with_stdio(false); cin.tie(NULL); int n; cin >> n; for (int i = 1; i <= n; i++) { double x, y, r; cin >> x >> y >> r; cir[i] = {x, y, r, i}; } sort(cir+1, cir+1+n); for (int i = 1; i <= n; i++) { int ind = cir[i].i; cerr << ind << endl; if (mark[ind]) continue; mark[ind] = 1; ans[ind] = ind; for (int j = i+1; j <= n; j++) { int anind = cir[j].i; if (intersect(cir[i], cir[j])) { ans[anind] = ind; mark[anind] = 1; } } } for (int i = 1; i <= n; i++) { cout << ans[i] << ' '; } return 0; }
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...