제출 #123954

#제출 시각아이디문제언어결과실행 시간메모리
123954RayanLabidi원 고르기 (APIO18_circle_selection)C++14
0 / 100
3067 ms558820 KiB
#include <bits/stdc++.h> #define rp(_s,_i,_n) for(int _s=_i;_s<_n;_s++) #define sz(_itt) (int)_itt.size() #define mp(__a,__b) make_pair(__a,__b) #define pb(_p) push_back(_p) #define fastio ios_base::sync_with_stdio(0);cin.tie(0);cout.tie(0); #define mod 1000000007 using namespace std; typedef long long ll; struct cir{ int rad,ind,x,y; }; bool acomp(cir a,cir b){ //if(a.rad==b.rad)return a.ind<b.ind; return a.rad>b.rad; } vector<cir> c;//circles vector<vector<cir> >con;//circles connected to circle con[i] int n;//numb of circles vector<bool>del; vector<int> killer; double dist(int x,int y){ return sqrt((c[x].x-c[y].x)*(c[x].x-c[y].x)+(c[x].y-c[y].y)*(c[x].y-c[y].y)); } void connecting(int u){ rp(i,0,n){ if(i==u)continue; if(dist(u,i)<=c[i].rad+c[u].rad){ con[u].push_back(c[i]); } } } int main() { //fastio cin>>n; c.resize(n),con.resize(n),del.resize(n),killer.resize(n); rp(i,0,n){ cin>>c[i].x>>c[i].y>>c[i].rad; c[i].ind=i; } sort(c.begin(),c.end(),acomp); rp(i,0,n){ connecting(i); } rp(i,0,n){ if(del[c[i].ind]==1)continue; del[c[i].ind]=1; killer[c[i].ind]=c[i].ind; for(auto x:con[i]){ if(del[x.ind]==1)continue; killer[x.ind]=c[i].ind; del[x.ind]=1; } } rp(i,0,n){ cout <<killer[i]+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...