/*
بسم الله الرحمن الرحيم
Author:
(:Muhammad Aneeq:)
*/
#include <iostream>
#include <set>
#include <vector>
#include <algorithm>
using namespace std;
#define int long long
int man(pair<int,int>a,pair<int,int>b)
{
return ((a.first-b.first)*(a.first-b.first)+(a.second-b.second)*(a.second-b.second));
}
inline void solve()
{
int n;
cin>>n;
pair<int,int>a[n];
bool w=0;
set<pair<int,int>>s;
int ra[n]={};
for (int i=0;i<n;i++)
{
int x,y,r;
cin>>x>>y>>r;
a[i]={x,y};
if (y!=0)
w=1;
s.insert({-r,i});
ra[i]=r;
}
if (w==0)
{
vector<pair<int,int>>f;
for (int i=0;i<n;i++)
f.push_back({a[i].first,i});
s={};
sort(begin(f),end(f));
for (int i=0;i<n;i++)
s.insert({-ra[f[i].second],i});
bool vis[n]={};
int ans[n]={};
while (s.size())
{
int r=(*begin(s)).first,i=(*begin(s)).second;
s.erase(*begin(s));
ans[i]=f[i].second;
vis[i]=1;
vector<pair<int,int>>z;
for (int j=i+1;j<n;j++)
{
if (vis[j])
break;
int r1=ra[f[j].second];
int dis=man(a[f[i].second],a[f[j].second]);
if (dis<=((r+r1)*(r+r1)))
z.push_back({r1,j});
else
break;
}
for (int j=i-1;j>=0;j--)
{
if (vis[j])
break;
int r1=ra[f[j].second];
int dis=man(a[f[i].second],a[f[j].second]);
if (dis<=((r+r1)*(r+r1)))
z.push_back({r1,j});
else
break;
}
for (auto j:z)
{
ans[f[j.second].second]=f[i].second;
vis[f[j.second].second]=1;
s.erase(j);
}
}
for (auto i:ans)
cout<<i+1<<' ';
cout<<endl;
return;
}
else
{
int ans[n]={};
while (s.size())
{
int r=(*begin(s)).first,i=(*begin(s)).second;
s.erase(*begin(s));
ans[i]=i;
vector<pair<int,int>>z;
for (auto [r1,j]:s)
{
int dis=man(a[i],a[j]);
if (dis<=((r+r1)*(r+r1)))
z.push_back({r1,j});
if (z.size()&&n>5000)
break;
}
for (auto j:z)
{
ans[j.second]=i;
s.erase(j);
}
}
for (auto i:ans)
cout<<i+1<<' ';
cout<<endl;
}
}
signed main()
{
ios_base::sync_with_stdio(false);cin.tie(NULL);cout.tie(NULL);
solve();
}
# |
결과 |
실행 시간 |
메모리 |
Grader output |
1 |
Correct |
1 ms |
348 KB |
Output is correct |
2 |
Correct |
0 ms |
348 KB |
Output is correct |
3 |
Correct |
0 ms |
348 KB |
Output is correct |
4 |
Correct |
0 ms |
348 KB |
Output is correct |
5 |
Correct |
0 ms |
348 KB |
Output is correct |
6 |
Correct |
0 ms |
348 KB |
Output is correct |
7 |
Correct |
1 ms |
348 KB |
Output is correct |
8 |
Correct |
1 ms |
500 KB |
Output is correct |
9 |
Correct |
0 ms |
348 KB |
Output is correct |
10 |
Correct |
1 ms |
348 KB |
Output is correct |
11 |
Correct |
1 ms |
348 KB |
Output is correct |
12 |
Correct |
0 ms |
348 KB |
Output is correct |
13 |
Correct |
0 ms |
348 KB |
Output is correct |
14 |
Correct |
1 ms |
348 KB |
Output is correct |
15 |
Correct |
0 ms |
348 KB |
Output is correct |
16 |
Correct |
1 ms |
348 KB |
Output is correct |
17 |
Correct |
1 ms |
348 KB |
Output is correct |
18 |
Correct |
1 ms |
600 KB |
Output is correct |
19 |
Correct |
3 ms |
1116 KB |
Output is correct |
20 |
Correct |
3 ms |
1116 KB |
Output is correct |
21 |
Correct |
3 ms |
860 KB |
Output is correct |
22 |
Correct |
108 ms |
892 KB |
Output is correct |
23 |
Correct |
109 ms |
892 KB |
Output is correct |
24 |
Correct |
104 ms |
856 KB |
Output is correct |
25 |
Correct |
108 ms |
892 KB |
Output is correct |
26 |
Correct |
106 ms |
896 KB |
Output is correct |
# |
결과 |
실행 시간 |
메모리 |
Grader output |
1 |
Incorrect |
579 ms |
37152 KB |
Output isn't correct |
2 |
Halted |
0 ms |
0 KB |
- |
# |
결과 |
실행 시간 |
메모리 |
Grader output |
1 |
Correct |
0 ms |
348 KB |
Output is correct |
2 |
Execution timed out |
3078 ms |
9624 KB |
Time limit exceeded |
3 |
Halted |
0 ms |
0 KB |
- |
# |
결과 |
실행 시간 |
메모리 |
Grader output |
1 |
Execution timed out |
3039 ms |
28372 KB |
Time limit exceeded |
2 |
Halted |
0 ms |
0 KB |
- |
# |
결과 |
실행 시간 |
메모리 |
Grader output |
1 |
Correct |
1 ms |
348 KB |
Output is correct |
2 |
Correct |
0 ms |
348 KB |
Output is correct |
3 |
Correct |
0 ms |
348 KB |
Output is correct |
4 |
Correct |
0 ms |
348 KB |
Output is correct |
5 |
Correct |
0 ms |
348 KB |
Output is correct |
6 |
Correct |
0 ms |
348 KB |
Output is correct |
7 |
Correct |
1 ms |
348 KB |
Output is correct |
8 |
Correct |
1 ms |
500 KB |
Output is correct |
9 |
Correct |
0 ms |
348 KB |
Output is correct |
10 |
Correct |
1 ms |
348 KB |
Output is correct |
11 |
Correct |
1 ms |
348 KB |
Output is correct |
12 |
Correct |
0 ms |
348 KB |
Output is correct |
13 |
Correct |
0 ms |
348 KB |
Output is correct |
14 |
Correct |
1 ms |
348 KB |
Output is correct |
15 |
Correct |
0 ms |
348 KB |
Output is correct |
16 |
Correct |
1 ms |
348 KB |
Output is correct |
17 |
Correct |
1 ms |
348 KB |
Output is correct |
18 |
Correct |
1 ms |
600 KB |
Output is correct |
19 |
Correct |
3 ms |
1116 KB |
Output is correct |
20 |
Correct |
3 ms |
1116 KB |
Output is correct |
21 |
Correct |
3 ms |
860 KB |
Output is correct |
22 |
Correct |
108 ms |
892 KB |
Output is correct |
23 |
Correct |
109 ms |
892 KB |
Output is correct |
24 |
Correct |
104 ms |
856 KB |
Output is correct |
25 |
Correct |
108 ms |
892 KB |
Output is correct |
26 |
Correct |
106 ms |
896 KB |
Output is correct |
27 |
Incorrect |
6 ms |
1368 KB |
Output isn't correct |
28 |
Halted |
0 ms |
0 KB |
- |
# |
결과 |
실행 시간 |
메모리 |
Grader output |
1 |
Correct |
1 ms |
348 KB |
Output is correct |
2 |
Correct |
0 ms |
348 KB |
Output is correct |
3 |
Correct |
0 ms |
348 KB |
Output is correct |
4 |
Correct |
0 ms |
348 KB |
Output is correct |
5 |
Correct |
0 ms |
348 KB |
Output is correct |
6 |
Correct |
0 ms |
348 KB |
Output is correct |
7 |
Correct |
1 ms |
348 KB |
Output is correct |
8 |
Correct |
1 ms |
500 KB |
Output is correct |
9 |
Correct |
0 ms |
348 KB |
Output is correct |
10 |
Correct |
1 ms |
348 KB |
Output is correct |
11 |
Correct |
1 ms |
348 KB |
Output is correct |
12 |
Correct |
0 ms |
348 KB |
Output is correct |
13 |
Correct |
0 ms |
348 KB |
Output is correct |
14 |
Correct |
1 ms |
348 KB |
Output is correct |
15 |
Correct |
0 ms |
348 KB |
Output is correct |
16 |
Correct |
1 ms |
348 KB |
Output is correct |
17 |
Correct |
1 ms |
348 KB |
Output is correct |
18 |
Correct |
1 ms |
600 KB |
Output is correct |
19 |
Correct |
3 ms |
1116 KB |
Output is correct |
20 |
Correct |
3 ms |
1116 KB |
Output is correct |
21 |
Correct |
3 ms |
860 KB |
Output is correct |
22 |
Correct |
108 ms |
892 KB |
Output is correct |
23 |
Correct |
109 ms |
892 KB |
Output is correct |
24 |
Correct |
104 ms |
856 KB |
Output is correct |
25 |
Correct |
108 ms |
892 KB |
Output is correct |
26 |
Correct |
106 ms |
896 KB |
Output is correct |
27 |
Incorrect |
579 ms |
37152 KB |
Output isn't correct |
28 |
Halted |
0 ms |
0 KB |
- |