Advertisement
lameski

Genericki Klasteri

Aug 19th, 2017
100
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 1.96 KB | None | 0 0
  1. import java.util.*;
  2.  
  3. /**
  4. * January 2016 Exam problem 2
  5. */
  6. public class ClusterTest {
  7. public static void main(String[] args) {
  8. Scanner scanner = new Scanner(System.in);
  9. Cluster<Point2D> cluster = new Cluster<>();
  10. int n = scanner.nextInt();
  11. scanner.nextLine();
  12. for (int i = 0; i < n; ++i) {
  13. String line = scanner.nextLine();
  14. String[] parts = line.split(" ");
  15. long id = Long.parseLong(parts[0]);
  16. float x = Float.parseFloat(parts[1]);
  17. float y = Float.parseFloat(parts[2]);
  18. cluster.addItem(new Point2D(id, x, y));
  19. }
  20. int id = scanner.nextInt();
  21. int top = scanner.nextInt();
  22. cluster.near(id, top);
  23. scanner.close();
  24. }
  25. }
  26.  
  27. // your code here
  28. abstract class Element<T>
  29. {
  30. long id;
  31.  
  32. abstract long getId();
  33.  
  34. abstract double getDistance(T item);
  35. }
  36.  
  37. class Cluster<T extends Element<T>>
  38. {
  39. Map<Long, T> elements;
  40.  
  41. public Cluster()
  42. {
  43. elements = new HashMap<>();
  44. }
  45.  
  46. public void addItem(T element)
  47. {
  48. elements.put(element.getId(), element);
  49. }
  50.  
  51. public void near(long id, int top)
  52. {
  53. List<T> list = new ArrayList<>(elements.values());
  54. T el = elements.get(id);
  55.  
  56. Collections.sort(list, new Comparator<T>() {
  57.  
  58. @Override
  59. public int compare(T o1, T o2) {
  60. // TODO Auto-generated method stub
  61. return Double.compare(o1.getDistance(el), o2.getDistance(el));
  62. }
  63.  
  64.  
  65. });
  66.  
  67. for(int i=1; i<=top; i++)
  68. {
  69. System.out.printf("%d. %d -> %.3f\n", i, list.get(i).getId(), list.get(i).getDistance(el));
  70. }
  71.  
  72.  
  73. }
  74. }
  75.  
  76. class Point2D extends Element<Point2D>
  77. {
  78. long id;
  79. float x,y;
  80.  
  81. Point2D(long id, float x, float y)
  82. {
  83. this.id = id;
  84. this.x = x;
  85. this.y = y;
  86. }
  87.  
  88. @Override
  89. long getId() {
  90. // TODO Auto-generated method stub
  91. return id;
  92. }
  93.  
  94. @Override
  95. double getDistance(Point2D item) {
  96. // TODO Auto-generated method stub
  97. return Math.sqrt(Math.pow(x-item.x, 2) + Math.pow(y-item.y, 2));
  98. }
  99.  
  100.  
  101. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement