Pbinfo #841 Bomber
Cerința
Se consideră un poligon militar, pe care este stabilit un sistem de axe de coordonate xOy. Se dau n bombe, numerotate de la 1 la n, pentru fiecare cunoscându-se coordonatele x y și puterea de distrugere p. La explozia unei bombe de putere p se va distruge totul în interiorul și pe cercul de centru x y și rază p, iar dacă există alte bombe în această zonă, vor exploda la rândul lor.

Dându-se numărul de ordine I al unei bombe care explodează, să se determine câte bombe rămân intacte la finalul șirului de explozii declanșate.

Date de intrare
Fișierul de intrare bomber.in conține pe prima linie numerele n I, fiecare dintre următoarele n linii conține câte trei numere x y p, cu semnificația din enunț.

Date de ieșire
Fișierul de ieșire bomber.out va conține pe prima linie numărul C, reprezentând numărul de bombe rămase neexplodate.

Restricții și precizări
1 ≤ n ≤ 100
1 ≤ I ≤ n
coordonatele x y sunt numere întregi, iar puterile p sunt numere naturale
-200 ≤ x , y ≤ 200
* 1 ≤ p ≤ 30

Exemplu
bomber.in

9 5
0 3 2
-1 1 3
1 4 1
3 4 4
-1 -2 3
3 1 3
0 -4 2
3 -2 5
4 -1 2
bomber.out

4


Răspuns :

Răspuns:

#include<fstream>

#include<cmath>

using namespace std;

ifstream cin("bomber.in");

ofstream cout("bomber.out");

struct bomb

{

   int x,y,p,on;

}v[101];

inline int comp(int ind,int j)

{

   return sqrt((v[ind].x-v[j].x)*(v[ind].x-v[j].x)+(v[ind].y-v[j].y)*(v[ind].y-v[j].y))<=v[ind].p;

}

inline void exploziv(int ind,int n)

{

   v[ind].on=1;

   for(int i=1;i<=n;i++)

       if(!v[i].on)

   {

       if(comp(ind,i))

           exploziv(i,n);

   }

}

int main()

{

   static int n,ind,k;

   cin>>n>>ind;

   for(int i=1;i<=n;i++)

       cin>>v[i].x>>v[i].y>>v[i].p;

   exploziv(ind,n);

   for(int i=1;i<=n;i++)

       if(!v[i].on)

           k++;

   cout<<k;

}

Explicație:

Vă mulțumim că ați ales să vizitați platforma noastră dedicată Informatică. Sperăm că ați găsit conținutul oferit util și inspirațional. Dacă aveți întrebări suplimentare sau doriți asistență, vă încurajăm să ne contactați. Ne-ar face plăcere să reveniți și nu uitați să ne adăugați în lista dumneavoastră de favorite!


RO Learnings: Alte intrebari