이 제출은 이전 버전의 oj.uz에서 채점하였습니다. 현재는 제출 당시와는 다른 서버에서 채점을 하기 때문에, 다시 제출하면 결과가 달라질 수도 있습니다.
#include <bits/stdc++.h>
using namespace std;
#define int long long
#define ii pair<int,int>
#define vi vector<int>
typedef tuple<int,int,int> iii;
typedef tuple<int,int,int,int> iiii;
typedef vector<ii> vii;
struct Comp{
bool operator()(const iiii a, const iiii b){
if (get<2>(a)!=get<2>(b)) return get<2>(a) < get<2>(b); else return get<3>(a) > get<3>(b);
}
};
int32_t main(){
int n,x,y,r,idx; cin>>n;
vector<iiii> V;
vi AL[n];
for (int i=0; i<n; i++){
cin>>x>>y>>r;
V.emplace_back(iiii({x,y,r,i}));
}
for (int i=0; i<n; i++){
for (int j=i+1; j<n; j++){
if ((get<0>(V[i])-get<0>(V[j]))*(get<0>(V[i])-get<0>(V[j]))
+ (get<1>(V[i])-get<1>(V[j]))*(get<1>(V[i])-get<1>(V[j]))
<= (get<2>(V[i])+get<2>(V[j]))*(get<2>(V[i])+get<2>(V[j]))){
AL[i].emplace_back(j);
AL[j].emplace_back(i);
}
}
}
priority_queue<iiii, vector<iiii>, Comp> PQ;
for (int i=0; i<n; i++){
PQ.push(V[i]);
}
bool vis[n]={};
int ans[n];
while (!PQ.empty()){
iiii curr=PQ.top(); PQ.pop();
idx = get<3>(curr);
if (vis[idx]) continue;
ans[idx]=idx;
for (auto nb : AL[idx]){
if (!vis[nb]){
vis[nb]=true;
ans[nb]=idx;
}
}
}
for (int i=0; i<n; i++) cout<<ans[i]+1<<" ";
return 0;
}
# | Verdict | Execution time | Memory | Grader output |
---|
Fetching results... |
# | Verdict | Execution time | Memory | Grader output |
---|
Fetching results... |
# | Verdict | Execution time | Memory | Grader output |
---|
Fetching results... |
# | Verdict | Execution time | Memory | Grader output |
---|
Fetching results... |
# | Verdict | Execution time | Memory | Grader output |
---|
Fetching results... |
# | Verdict | Execution time | Memory | Grader output |
---|
Fetching results... |