Advertisement
dzocesrce

[APS] Race

Aug 25th, 2023
448
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Java 6.63 KB | None | 0 0
  1. //septemvri 2021 - termin 1
  2.  
  3. import java.util.Scanner;
  4.  
  5. class Athlete {
  6.     private int id;
  7.     private double time;
  8.  
  9.     public Athlete(int id, double time) {
  10.         this.id = id;
  11.         this.time = time;
  12.     }
  13.  
  14.     public int getId() {
  15.         return id;
  16.     }
  17.  
  18.     public double getTime() {
  19.         return time;
  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 Race {
  184.  
  185.     //todo: implement function
  186.     public static void competition(SLL<Athlete> prev, SLL<Athlete> curr){
  187.         SLLNode<Athlete> temp1= prev.getFirst();
  188.         SLLNode<Athlete> temp2= curr.getFirst();
  189.         double worst_prev_time= temp1.element.getTime();
  190.         int worst_prev_athlete= temp1.element.getId();
  191.         temp1=temp1.succ;
  192.         while(temp1!=null){
  193.             double prev_time= temp1.element.getTime();
  194.             if(prev_time>worst_prev_time){
  195.                 worst_prev_time=prev_time;
  196.                 worst_prev_athlete=temp1.element.getId();
  197.             }
  198.             temp1=temp1.succ;
  199.         }
  200.         while(temp2!=null){
  201.             if(temp2.element.getTime()>worst_prev_time){
  202.                 curr.delete(temp2);
  203.             }
  204.             temp2=temp2.succ;
  205.         }
  206.     }
  207.  
  208.     public static void main(String[] args) {
  209.         Scanner scanner = new Scanner(System.in);
  210.         int prevWinnersCount = Integer.parseInt(scanner.nextLine());
  211.         int currYearRunnersCount = Integer.parseInt(scanner.nextLine());
  212.         SLL<Athlete> prevWinners = new SLL<Athlete>();
  213.         SLL<Athlete> currYearRunners = new SLL<Athlete>();
  214.  
  215.         for (int i = 0; i < prevWinnersCount; i++) {
  216.             String line = scanner.nextLine();
  217.             String[] parts = line.split("\\s+");
  218.             prevWinners.insertLast(new Athlete(Integer.parseInt(parts[0]), Double.parseDouble(parts[1])));
  219.         }
  220.  
  221.         for (int i = 0; i < currYearRunnersCount; i++) {
  222.             String line = scanner.nextLine();
  223.             String[] parts = line.split("\\s+");
  224.             currYearRunners.insertLast(new Athlete(Integer.parseInt(parts[0]), Double.parseDouble(parts[1])));
  225.         }
  226.  
  227.         competition(prevWinners, currYearRunners);
  228.         System.out.println(currYearRunners.toString());
  229.     }
  230. }
  231. //    TestCase #1
  232. //    2
  233. //    3
  234. //    884 13.30
  235. //    824 17.36
  236. //    665 12.40
  237. //    529 29.59
  238. //    628 25.21
  239. //    
  240. //    665
  241. //    
  242. //    TestCase #2
  243. //    2
  244. //    3
  245. //    884 13.30
  246. //    824 17.36
  247. //    665 18.40
  248. //    529 29.59
  249. //    628 18.21
  250. //    
  251. //    Praznalista!!!
  252. //    
  253. //    TestCase #3
  254. //    2
  255. //    3
  256. //    884 13.30
  257. //    824 17.36
  258. //    665 18.40
  259. //    529 16.05
  260. //    628 17.35
  261. //    
  262. //    529 628
  263.  
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement