Submission #402192

#TimeUsernameProblemLanguageResultExecution timeMemory
402192A_DCircle selection (APIO18_circle_selection)C++14
7 / 100
124 ms1100 KiB
#include <bits/stdc++.h>
#define int long long
#define ii pair<int,int>
#define F first
#define S second
#define du long double

using namespace std;
const int N=5010;
pair<ii,ii> a[N];
int vis[N];
void solve()
{
    int n;
    cin>>n;
    for(int i=1;i<=n;i++){
        scanf("%lld",&a[i].S.F);
        scanf("%lld",&a[i].S.S);
        scanf("%lld",&a[i].F.F);
        a[i].F.F*=-1;
        a[i].F.S=i;
    }
    sort(a+1,a+n+1);
    for(int i=1;i<=n;i++){
        a[i].F.F*=-1;
    }
    int ans=0,t=n;
    while(t){
        ans++;
        int u=0;
        for(int i=1;i<=n;i++){
            if(vis[a[i].F.S]==0){
                vis[a[i].F.S]=a[i].F.S;
                t--;
                u=i;
                break;
            }
        }
        for(int i=1;i<=n;i++){
            if(vis[a[i].F.S]==0){
                du x=a[i].S.F-a[u].S.F;
                du y=a[i].S.S-a[u].S.S;
                du dis=sqrt(x*x+y*y);
                du re=a[i].F.F+a[u].F.F;
                if(re>=dis){
                    vis[a[i].F.S]=vis[a[u].F.S];
                    t--;
                }
            }
        }
    }
    for(int i=1;i<=n;i++){
        cout<<vis[i]<<" ";
    }
}

main()
{
    int t=1;
//    cin>>t;
    while(t--)solve();
}
/*

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



*/

Compilation message (stderr)

circle_selection.cpp:57:1: warning: ISO C++ forbids declaration of 'main' with no type [-Wreturn-type]
   57 | main()
      | ^~~~
circle_selection.cpp: In function 'void solve()':
circle_selection.cpp:17:14: warning: ignoring return value of 'int scanf(const char*, ...)' declared with attribute 'warn_unused_result' [-Wunused-result]
   17 |         scanf("%lld",&a[i].S.F);
      |         ~~~~~^~~~~~~~~~~~~~~~~~
circle_selection.cpp:18:14: warning: ignoring return value of 'int scanf(const char*, ...)' declared with attribute 'warn_unused_result' [-Wunused-result]
   18 |         scanf("%lld",&a[i].S.S);
      |         ~~~~~^~~~~~~~~~~~~~~~~~
circle_selection.cpp:19:14: warning: ignoring return value of 'int scanf(const char*, ...)' declared with attribute 'warn_unused_result' [-Wunused-result]
   19 |         scanf("%lld",&a[i].F.F);
      |         ~~~~~^~~~~~~~~~~~~~~~~~
#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...