Advertisement
Guest User

Untitled

a guest
Nov 20th, 2019
539
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Java 8.17 KB | None | 0 0
  1. /*
  2. /*Пред да започне колоквиумската недела на ФИНКИ се организираат консултации по предметот Алгоритми
  3.  *и структури на податоци. Бидејќи има голем број на заинтересирани студенти за консултации се
  4.  *објавува анкета на курсот за да се пријават студентите и тоа има два избора на анкетата (може да се изберат и двата):
  5. 1)  Имам кратки прашања
  6. 2)  Ми треба објаснување за некои задачи
  7. 3)  И кратки прашања и објаснување за задачи
  8. Асистентката Магдалена ги држи консултациите. Студентите се примаат на консултации според следниот
  9. редослед: прво се примаат по еден студент од оние кои имаат кратки прашања според редоследот по кој
  10. се пријавиле. Ако нема еден од овие се пушта студенти кои кои имаат прашања и за задачи за да се
  11. исполни квотата од 1 студент,ама од овој прашува само кратки прашања. Ако се пуштил студент кој има
  12. и прашања за задачи тој се преместува на крај на редицата за задачи. Откако ќе се заврши овој
  13. студент со кратки прашања, се продолжува со оние кои имаат нејасни задачи. Од овие студенти се
  14. примаат 1. Ако нема еден од овие се пушта студент кој има прашања и за задачи за да се исполни
  15. квотата од 1 студент за задачи, ама овој прашува само за задачи, и потоа се преместува на крајот
  16. на редицата за кратки прашања. Понатаму се продолжува на истиот начин со тоа што за студентите кои
  17. се пријавиле и за задачи и за прашања влегуваат откако ќе се испразни редот со само кратки прашања
  18. или само со задачи. Студентите кои се пријавиле и за прашања и задачи, откако ќе завршат со прашањата
  19. се преместуваат на крај на редицата за задачи, и обратно. Кој ќе биде конечниот редослед на влегување?
  20. Влез: Се дава прво бројот на студенти кои се пријавиле за кратки прашања, а потоа се наведуваат
  21. студентите според редоследот на пријавување за кратки прашања, потоа истото за студентите кои се
  22. пријавиле само за задачи,па на крај студентите кои се пријавиле и за двете. На излез се печатат
  23. студентите според редоследот по кој влегле на консултации.
  24. Sample input
  25. 4
  26. IlinkaIvanoska
  27. IgorKulev
  28. MagdalenaKostoska
  29. HristinaMihajloska
  30. 2
  31. AnastasMishev
  32. VladimirTrajkovik
  33. 1
  34. SlobodanKalajdziski
  35. Sample output
  36. IlinkaIvanoska
  37. AnastasMishev
  38. IgorKulev
  39. VladimirTrajkovik
  40. MagdalenaKostoska
  41. SlobodanKalajdziski
  42. HristinaMihajloska
  43. SlobodanKalajdziski
  44. */
  45.  
  46. import java.io.BufferedReader;
  47. import java.io.IOException;
  48. import java.io.InputStreamReader;
  49. import java.util.NoSuchElementException;
  50.  
  51. interface Queue<E> {
  52.  
  53.     // Elementi na redicata se objekti od proizvolen tip.
  54.  
  55.     // Metodi za pristap:
  56.  
  57.     public boolean isEmpty ();
  58.     // Vrakja true ako i samo ako redicata e prazena.
  59.  
  60.     public int size ();
  61.     // Ja vrakja dolzinata na redicata.
  62.  
  63.     public E peek ();
  64.     // Go vrakja elementot na vrvot t.e. pocetokot od redicata.
  65.  
  66.     // Metodi za transformacija:
  67.  
  68.     public void clear ();
  69.     // Ja prazni redicata.
  70.  
  71.     public void enqueue (E x);
  72.     // Go dodava x na kraj od redicata.
  73.  
  74.     public E dequeue ();
  75.     // Go otstranuva i vrakja pochetniot element na redicata.
  76.  
  77. }
  78.  
  79. class LinkedQueue<E> implements Queue<E> {
  80.  
  81.     // Redicata e pretstavena na sledniot nacin:
  82.     // length go sodrzi brojot na elementi.
  83.     // Elementite se zachuvuvaat vo jazli dod SLL
  84.     // front i rear se linkovi do prviot i posledniot jazel soodvetno.
  85.     SLLNode<E> front, rear;
  86.     int length;
  87.  
  88.     // Konstruktor ...
  89.  
  90.     public LinkedQueue () {
  91.         clear();
  92.     }
  93.  
  94.     public boolean isEmpty () {
  95.         // Vrakja true ako i samo ako redicata e prazena.
  96.         return (length == 0);
  97.     }
  98.  
  99.     public int size () {
  100.         // Ja vrakja dolzinata na redicata.
  101.         return length;
  102.     }
  103.  
  104.     public E peek () {
  105.         // Go vrakja elementot na vrvot t.e. pocetokot od redicata.
  106.         if (front == null)
  107.             throw new NoSuchElementException();
  108.         return front.element;
  109.     }
  110.  
  111.     public void clear () {
  112.         // Ja prazni redicata.
  113.         front = rear = null;
  114.         length = 0;
  115.     }
  116.  
  117.     public void enqueue (E x) {
  118.         // Go dodava x na kraj od redicata.
  119.         SLLNode<E> latest = new SLLNode<E>(x, null);
  120.         if (rear != null) {
  121.             rear.succ = latest;
  122.             rear = latest;
  123.         } else
  124.             front = rear = latest;
  125.         length++;
  126.     }
  127.  
  128.     public E dequeue () {
  129.         // Go otstranuva i vrakja pochetniot element na redicata.
  130.         if (front != null) {
  131.             E frontmost = front.element;
  132.             front = front.succ;
  133.             if (front == null)  rear = null;
  134.             length--;
  135.             return frontmost;
  136.         } else
  137.             throw new NoSuchElementException();
  138.     }
  139.  
  140. }
  141.  
  142. class SLLNode<E> {
  143.     protected E element;
  144.     protected SLLNode<E> succ;
  145.  
  146.     public SLLNode(E elem, SLLNode<E> succ) {
  147.         this.element = elem;
  148.         this.succ = succ;
  149.     }
  150.  
  151.     @Override
  152.     public String toString() {
  153.         return element.toString();
  154.     }
  155. }
  156.  
  157. public class Konsultacii {
  158.     public static void main (String [] args) throws IOException {
  159.         BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
  160.  
  161.         int brZaKratkiPrashanja = Integer.parseInt(br.readLine());
  162.         LinkedQueue<String> zaKratkiPrashanja = new LinkedQueue<>();
  163.  
  164.         for(int i=0; i<brZaKratkiPrashanja; i++){
  165.             zaKratkiPrashanja.enqueue(br.readLine());
  166.         }
  167.  
  168.         int brZaZadachi = Integer.parseInt(br.readLine());
  169.         LinkedQueue<String> zaZadachi = new LinkedQueue<>();
  170.  
  171.         for(int i=0; i<brZaZadachi; i++){
  172.             zaZadachi.enqueue(br.readLine());
  173.         }
  174.  
  175.         int brZaDvete = Integer.parseInt(br.readLine());
  176.         LinkedQueue<String> zaDvete = new LinkedQueue<>();
  177.  
  178.         for(int i=0; i<brZaDvete; i++){
  179.             zaDvete.enqueue(br.readLine());
  180.         }
  181.  
  182.         for(int i=0; i<brZaDvete; i++){
  183.             String value = zaDvete.dequeue();
  184.             zaKratkiPrashanja.enqueue(value);
  185.             zaZadachi.enqueue(value);
  186.         }
  187.  
  188.         LinkedQueue<String> finalRed = new LinkedQueue<>();
  189.         int flag = 1;
  190.         int var = zaKratkiPrashanja.length+zaZadachi.length;
  191.         for(int i=0; i<var; i++){
  192.             if(((flag == 1) || zaZadachi.isEmpty())&& !zaKratkiPrashanja.isEmpty()){
  193.                 finalRed.enqueue(zaKratkiPrashanja.dequeue());
  194.                 flag = 0;
  195.             }
  196.             if(((flag == 0) || zaKratkiPrashanja.isEmpty()) && !zaZadachi.isEmpty()){
  197.                 finalRed.enqueue(zaZadachi.dequeue());
  198.                 flag = 1;
  199.             }
  200.         }
  201.  
  202.         int finalInt = finalRed.length;
  203.         for(int i=0; i<finalInt; i++){
  204.             System.out.println(finalRed.dequeue());
  205.         }
  206.     }
  207. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement