Submission #932359

#TimeUsernameProblemLanguageResultExecution timeMemory
932359siewjhCircle selection (APIO18_circle_selection)C++17
7 / 100
254 ms25196 KiB
#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 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...