Submission #399769

#TimeUsernameProblemLanguageResultExecution timeMemory
399769my99nCircle selection (APIO18_circle_selection)C++14
0 / 100
3 ms716 KiB
#include<bits/stdc++.h> using namespace std; #define x first #define y second typedef pair<long long,long long> point; struct A { long long 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]; long long dis (point i, point j) { long long temp = (i.x - j.x) * (i.x- j.x) + (i.y - j.y) * (i.y - j.y); return temp; } bool intersect (A i, A j) { return (dis({i.x, i.y}, {j.x, j.y}) <= (i.r+j.r)*(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++) { long long 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...