Загрузка данных


#include <iostream>
#include <vector>
#include <algorithm>
#include <cmath>

using namespace std;

struct Zuraw
{
    long long iks,igrek,wysokosc;
    int indeks;
};

int main()
{
    ios_base::sync_with_stdio(0);
    cin.tie(0);
    
    int liczbaZurawi;
    if(!(cin>>liczbaZurawi)) return 0;
    
    vector<Zuraw> zurawie(liczbaZurawi);
    for(int i=0; i<liczbaZurawi; i++)
    {
        cin>>zurawie[i].iks>>zurawie[i].igrek>>zurawie[i].wysokosc;
        zurawie[i].indeks=i;
    }
    
    vector<long long> ramiona(liczbaZurawi);
    for(int i=0; i<liczbaZurawi; i++)
    {
        long long maxR=zurawie[i].wysokosc;
        for(int j=0; j<liczbaZurawi; j++)
        {
            if(i==j) continue;
            long long dx=zurawie[i].iks-zurawie[j].iks;
            long long dy=zurawie[i].igrek-zurawie[j].igrek;
            long long odlegloscKwadrat=dx*dx+dy*dy;
            
            if(zurawie[j].wysokosc<zurawie[i].wysokosc)
            {
                long long limit=sqrt(odlegloscKwadrat)-1;
                if(limit<maxR) maxR=limit;
            }
            else
            {
                long long limit=sqrt(odlegloscKwadrat);
                if(limit<maxR) maxR=limit;
            }
        }
        if(maxR<1) maxR=1;
        if(maxR>zurawie[i].wysokosc) maxR=zurawie[i].wysokosc;
        ramiona[i]=maxR;
    }
    
    for(int i=0; i<liczbaZurawi; i++)
    {
        cout<<ramiona[i]<<"\n";
    }
    
    return 0;
}