Stran 1 od 1

Zalivanje

Objavljeno: Če Maj 18, 2017 11:47 am
Napisal/-a lukazlatecan
Na vrtu raste N čudovitih cvetlic, ki se nahajajo na koordinatah [math]. Skrbni vrtnar Saša je namestil namakalni sistem, ki ima M šob za vodo. Posamezna šoba se nahaja na koordinatah [math] in zaliva cvetlice, ki od nje niso oddaljene več kot [math] enot. Šobe lahko tudi sovpadajo s cvetlicami. Cvetlice so zelo odporne na prekomerno zalivanje, slabo pa prenašajo sušo.

Napišite program, ki bo učinkovito izračunal, koliko cvetlic je še vedno potrebno zalivati ročno, ker jih namakalni sistem ne doseže.

Vhodni podatki
Vsa števila v vhodnih podatkih so cela. V prvi vrstici se nahajata števili N in M. V naslednjih N vrsticah so podane koordinate cvetlic [math] in [math]. Nato sledi še M vrstic, ki opisujejo šobe namakalnega sistem s števili [math], [math] in [math]. Koordinate po absolutni vrednosti ne presežejo 109.

Omejitve vhodnih podatkov
  • [math]
  • [math]
  • [math]
  • [math]

Izhodni podatki
Izpišite, koliko cvetlic namakalni sistem ne doseže.

Primer vhoda

Koda: Izberi vse

10 7
-2 -5
-39 44
-41 -30
-44 29
47 -6
25 -3
18 -7
-50 47
-35 -20
39 32
22 1 14
-29 -8 17
8 50 16
-5 35 19
6 4 8
-25 -50 4
-50 15 16

Pripadajoč izhod

Koda: Izberi vse

6

Re: Zalivanje

Objavljeno: Po Jun 19, 2017 3:29 pm
Napisal/-a hinkopihpih

Koda: Izberi vse

import java.util.*;

public class Zalivanje
{
   public static void main(String[]args)
   {
      Scanner skan = new Scanner(System.in);
      int n = skan.nextInt();
      int m = skan.nextInt();

      List<int[]> roze = new ArrayList<int[]>();
      List<int[]> sobe = new ArrayList<int[]>();

      for(int i = 0; i < n; i++)
      {
         int[] roza = new int[2];
         roza[0] = skan.nextInt();
         roza[1] = skan.nextInt();
         roze.add(roza);
      }

      for(int i = 0; i < m; i++)
      {
         int[] soba = new int[3];
         soba[0] = skan.nextInt();
         soba[1] = skan.nextInt();
         soba[2] = skan.nextInt();
         sobe.add(soba);
      }

      for(int i = 0; i < m; i++)
      {
         int r = sobe.get(i)[2];
         int x1 = sobe.get(i)[0];
         int y1 = sobe.get(i)[1];

         for(int j = 0; j < roze.size(); j++)
         {
            int x2 = roze.get(j)[0];
            int y2 = roze.get(j)[1];
            double distance = Math.sqrt((x2 - x1) * (x2 - x1) + (y2 - y1) * (y2 - y1));

            if(distance <= r)
            {
               roze.remove(j);
               j--;
            }   
         }   
      }

      System.out.println(roze.size());   
   }
}