제출 #164724

#제출 시각아이디문제언어결과실행 시간메모리
164724Rouge_Hugo원 고르기 (APIO18_circle_selection)C++14
7 / 100
3045 ms1912 KiB
#include <bits/stdc++.h>
#define ll long long
#define fast ios::sync_with_stdio(0);cin.tie(0);cout.tie(0);
using namespace std;
int n;
const int N=5007;
int vis[N],r[N];pair<int,int>a[N];
set<pair<int,int>>s;
bool check(int c1,int c2)
{
    long long x=a[c1].first-a[c2].first;x*=x;
    long long y=a[c1].second-a[c2].second;y*=y;
    ll rr=r[c1]+r[c2];rr*=rr;
    if (x+y<=rr)return 1;
    return false;

}
void cl(int ind)
{
    for(int i=0;i<n;i++)
    {
        if (vis[i])continue;
        if (check(ind,i))
        {
            s.erase({r[i],-i});
            vis[i]=ind+1;
        }
    }
}
int main()
{
    fast
    cin>>n;
    for(int i=0;i<n;i++)
    {
        int x,y,z;
        cin>>x>>y>>z;
        a[i].first=x;a[i].second=y;
        r[i]=z;
    }
    for(int i=0;i<n;i++)
    {
        s.insert({r[i],-i});
    }
    while (!s.empty())
    {
        pair<int,int>x=*s.rbegin();
        cl(-x.second);
    }
    for(int i=0;i<n;i++)cout<<vis[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...