Stran 1 od 1

Črte

Objavljeno: Ne Jul 02, 2017 10:27 pm
Napisal/-a lukazlatecan
V ravnini je podanih N točk, ki imajo celoštevilske koordinate. Točke lahko tudi sovpadajo (tj. dve ali več točk ima lahko enake koordinate). Med vsemi pari točk narišemo daljice. Napišite program, ki bo izračunal, koliko parov daljic je enake dolžine.

Vhodni podatki
V prvi vrstici se nahaja število točk N. V vsaki od naslednjih N vrstic sta podani s presledkom ločeni števili [math] in [math], tj. koordinati i-te točke.

Omejitve vhodnih podatkov
  • 1≤N≤12000
  • 0≤[math]≤20000

Izhodni podatki
Izpišite število enako dolgih parov daljic.

Primer

Vhod

Koda: Izberi vse

10
0 18
13 5
14 19
18 2
6 17
6 7
0 2
1 19
6 11
0 9


Izhod

Koda: Izberi vse

7

Re: Črte

Objavljeno: Po Jul 03, 2017 10:57 am
Napisal/-a hinkopihpih

Koda: Izberi vse

import java.util.*;
import java.lang.Math.*;

public class Crte
{
   public static void main(String[]args)
   {
      Scanner skan = new Scanner(System.in);
      int n = skan.nextInt();
      List<int[]> koordinate = new ArrayList<int[]>();
      List<double[]> razdalje = new ArrayList<double[]>();

      for(int i = 0; i < n; i++)
      {
         int x = skan.nextInt();
         int y = skan.nextInt();
         int[] read = {x,y};
         
         for(int j = 0; j < koordinate.size(); j++)
         {
            int x1 = koordinate.get(j)[0];
            int y1 = koordinate.get(j)[1];
            double razdalja = Math.sqrt((x - x1) * (x - x1) + (y - y1) * (y - y1));
            boolean check = false;

            for(int l = 0; l < razdalje.size(); l++)
            {
               if(razdalje.get(l)[0] == razdalja)
               {
                  razdalje.get(l)[1]++;
                  check = true;
                  break;
               }   
            }   

            if(!check)
            {
               double[] novo = {razdalja,1};
               razdalje.add(novo);
            }   
         }

         koordinate.add(read);   
      }   

      double pari = 0;

      for(int i = 0; i < razdalje.size(); i++)
      {
         double x = razdalje.get(i)[1];
         pari += (x * (x - 1))/2;
      }   

      System.out.println((int)(pari));
   }
}