Advertisement
dzocesrce

[APS] Math Competition

Aug 26th, 2023
388
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Java 6.26 KB | None | 0 0
  1. // 2021 septemvri - termin 1
  2.  
  3. import java.util.Scanner;
  4.  
  5. class Matematicar {
  6.     private int id;
  7.     private double points;
  8.  
  9.     public Matematicar(int id, double points) {
  10.         this.id = id;
  11.         this.points = points;
  12.     }
  13.  
  14.     public int getId() {
  15.         return id;
  16.     }
  17.  
  18.     public double getPoints() {
  19.         return points;
  20.     }
  21.  
  22.     @Override
  23.     public String toString() {
  24.         return String.valueOf(id);
  25.     }
  26. }
  27.  
  28. class SLLNode<E> {
  29.     protected E element;
  30.     protected SLLNode<E> succ;
  31.  
  32.     public SLLNode(E elem, SLLNode<E> succ) {
  33.         this.element = elem;
  34.         this.succ = succ;
  35.     }
  36.  
  37.     @Override
  38.     public String toString() {
  39.         return element.toString();
  40.     }
  41. }
  42.  
  43. class SLL<E> {
  44.     private SLLNode<E> first;
  45.  
  46.     public SLL() {
  47.         this.first = null;
  48.     }
  49.  
  50.     public void deleteList() {
  51.         first = null;
  52.     }
  53.  
  54.     public int length() {
  55.         int ret;
  56.         if (first != null) {
  57.             SLLNode<E> tmp = first;
  58.             ret = 1;
  59.             while (tmp.succ != null) {
  60.                 tmp = tmp.succ;
  61.                 ret++;
  62.             }
  63.             return ret;
  64.         } else
  65.             return 0;
  66.  
  67.     }
  68.  
  69.     @Override
  70.     public String toString() {
  71.         String ret = new String();
  72.         if (first != null) {
  73.             SLLNode<E> tmp = first;
  74.             ret += tmp;
  75.             while (tmp.succ != null) {
  76.                 tmp = tmp.succ;
  77.                 ret += " " + tmp;
  78.             }
  79.         } else
  80.             ret = "Prazna lista!!!";
  81.         return ret;
  82.     }
  83.  
  84.     public void insertFirst(E o) {
  85.         SLLNode<E> ins = new SLLNode<E>(o, first);
  86.         first = ins;
  87.     }
  88.  
  89.     public void insertAfter(E o, SLLNode<E> node) {
  90.         if (node != null) {
  91.             SLLNode<E> ins = new SLLNode<E>(o, node.succ);
  92.             node.succ = ins;
  93.         } else {
  94.             System.out.println("Dadenot jazol e null");
  95.         }
  96.     }
  97.  
  98.     public void insertBefore(E o, SLLNode<E> before) {
  99.         if (first != null) {
  100.             SLLNode<E> tmp = first;
  101.             if (first == before) {
  102.                 this.insertFirst(o);
  103.                 return;
  104.             }
  105.             while (tmp.succ != before)
  106.                 tmp = tmp.succ;
  107.             if (tmp.succ == before) {
  108.                 SLLNode<E> ins = new SLLNode<E>(o, before);
  109.                 tmp.succ = ins;
  110.             } else {
  111.                 System.out.println("Elementot ne postoi vo listata");
  112.             }
  113.         } else {
  114.             System.out.println("Listata e prazna");
  115.         }
  116.     }
  117.  
  118.     public void insertLast(E o) {
  119.         if (first != null) {
  120.             SLLNode<E> tmp = first;
  121.             while (tmp.succ != null)
  122.                 tmp = tmp.succ;
  123.             SLLNode<E> ins = new SLLNode<E>(o, null);
  124.             tmp.succ = ins;
  125.         } else {
  126.             insertFirst(o);
  127.         }
  128.     }
  129.  
  130.     public E deleteFirst() {
  131.         if (first != null) {
  132.             SLLNode<E> tmp = first;
  133.             first = first.succ;
  134.             return tmp.element;
  135.         } else {
  136.             System.out.println("Listata e prazna");
  137.             return null;
  138.         }
  139.     }
  140.  
  141.     public E delete(SLLNode<E> node) {
  142.         if (first != null) {
  143.             SLLNode<E> tmp = first;
  144.             if (first == node) {
  145.                 return this.deleteFirst();
  146.             }
  147.             while (tmp.succ != node && tmp.succ.succ != null)
  148.                 tmp = tmp.succ;
  149.             if (tmp.succ == node) {
  150.                 tmp.succ = tmp.succ.succ;
  151.                 return node.element;
  152.             } else {
  153.                 System.out.println("Elementot ne postoi vo listata");
  154.                 return null;
  155.             }
  156.         } else {
  157.             System.out.println("Listata e prazna");
  158.             return null;
  159.         }
  160.     }
  161.  
  162.     public SLLNode<E> getFirst() {
  163.         return first;
  164.     }
  165.  
  166.     public SLLNode<E> find(E o) {
  167.         if (first != null) {
  168.             SLLNode<E> tmp = first;
  169.             while (tmp.element != o && tmp.succ != null)
  170.                 tmp = tmp.succ;
  171.             if (tmp.element == o) {
  172.                 return tmp;
  173.             } else {
  174.                 System.out.println("Elementot ne postoi vo listata");
  175.             }
  176.         } else {
  177.             System.out.println("Listata e prazna");
  178.         }
  179.         return first;
  180.     }
  181. }
  182.  
  183. public class MathCompetition {
  184.  
  185.     //todo: implement function
  186.     public static void competition(SLL<Matematicar> prevYear, SLL<Matematicar> currYear) {
  187.         SLLNode<Matematicar> temp1= prevYear.getFirst();
  188.         SLLNode<Matematicar> temp2= currYear.getFirst();
  189.         double prosecni_poeni, suma=0;
  190.         int broj_matematicari= prevYear.length();
  191.         while(temp1!=null){
  192.             suma+= temp1.element.getPoints();
  193.             temp1=temp1.succ;
  194.         }
  195.         prosecni_poeni=suma/(double)broj_matematicari;
  196.         while(temp2!=null){
  197.             if(temp2.element.getPoints()<prosecni_poeni){
  198.                 currYear.delete(temp2);
  199.             }
  200.             temp2=temp2.succ;
  201.         }
  202.     }
  203.  
  204.     public static void main(String[] args) {
  205.         Scanner scanner = new Scanner(System.in);
  206.         int prevYearCount = Integer.parseInt(scanner.nextLine());
  207.         int currYearCount = Integer.parseInt(scanner.nextLine());
  208.         SLL<Matematicar> prevYear = new SLL<Matematicar>();
  209.         SLL<Matematicar> currYear = new SLL<Matematicar>();
  210.  
  211.         for (int i = 0; i < prevYearCount; i++) {
  212.             String line = scanner.nextLine();
  213.             String[] parts = line.split("\\s+");
  214.             prevYear.insertLast(new Matematicar(Integer.parseInt(parts[0]), Double.parseDouble(parts[1])));
  215.         }
  216.  
  217.         for (int i = 0; i < currYearCount; i++) {
  218.             String line = scanner.nextLine();
  219.             String[] parts = line.split("\\s+");
  220.             currYear.insertLast(new Matematicar(Integer.parseInt(parts[0]), Double.parseDouble(parts[1])));
  221.         }
  222.  
  223.         competition(prevYear, currYear);
  224.         System.out.println(currYear.toString());
  225.     }
  226. }
  227.  
  228. /*
  229. Test1
  230. 2
  231. 2
  232. 825 10.65
  233. 484 68.21
  234. 773 70.12
  235. 789 23.90
  236.  
  237. 773
  238. Test2
  239. 1
  240. 8
  241. 27 85.96
  242. 526 29.64
  243. 150 11.57
  244. 730 37.12
  245. 58 77.79
  246. 662 40.35
  247. 380 59.98
  248. 77 37.55
  249. 321 34.47
  250.  
  251. Prazna Lista!!!
  252. */
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement