Submission #112091

#TimeUsernameProblemLanguageResultExecution timeMemory
112091jaberndcCircle selection (APIO18_circle_selection)C++14
0 / 100
7 ms680 KiB
#include<iostream>
#include<algorithm>
#include<math.h>
using namespace std;

int ans[3005];
struct circle
{
	int x,y,r,i;
	int used=0;
};
bool comp(circle a,circle b)
{
	if(a.r==b.r) return a.i<b.i;
	return a.r>b.r;
}

circle c[3005];
bool intrsct(circle a,circle b)
{
	double d=(a.x-b.x)*(a.x-b.x)+(a.y-b.y)*(a.y-b.y);
	if(d<=(a.r+b.r)*(a.r+b.r)) return true;
	return false;
}

int main()
{
	int n;
	cin>>n;
	for(int i=1;i<=n;i++)
	{
		cin>>c[i].x>>c[i].y>>c[i].r;
		c[i].i=i;
	}
	sort(c+1,c+n+1,comp);
	for(int i=1;i<=n;i++)
	{
		if(c[i].used) continue;
		ans[c[i].i]=c[i].i;
		c[i].used=1;
		int start=i+1;
		for(int j=start;j<=n;j++)
		{
			if(c[j].used) continue;
			if(intrsct(c[i],c[j]))
			{
				//cout<<c[j].i<<endl;
				ans[c[j].i]=c[i].i;
				c[j].used=1;
			}
		}
	}
	for(int i=1;i<=n;i++)
	{
		cout<<ans[i]<<" ";
	}
}
/*
11
9 9 2
13 2 1
11 8 2
3 3 2
3 12 1
12 14 1
9 8 5
2 8 2
5 2 1
14 4 2
14 14 1
*/
#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...