ivana_andreevska

Kolokvium Zadaca

Nov 25th, 2021
166
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Java 9.06 KB | None | 0 0
  1. Се организира прв колоквиум по предметот Алгоритми и структури на податоци.
  2. За таа цел се отвара анкета по предметот на која студентите се пријавуваат.
  3. Анкетата има дадено 2 избори:
  4.  
  5. 1)  Полагам во било кој термин
  6.  
  7. 2)  Испитот ми се преклопува со Математика
  8.  
  9. Студентите се поставуваат во термините според редоследите во кои се примени
  10. (почнувајќи од првиот). Сите студенти сакаат да полагаат колку е можно порано
  11. па затоа дел од студентите мамат и во анкетата наведуваат дека истиот ден полагаат и Математика.
  12. Асистентите бараат список на студенти кои полагаат Математика и добиваат.
  13. Потоа се започнува со распределба на студентите во термини: прво во термините се доделуваат
  14. студентите кои се пријавиле дека полагаат и Математика (по редоследот по кој се пријавиле),
  15. меѓутоа секој од овие студенти се проверува дали навистина полага и
  16. Математика и ако мамел се сместува на крај од списокот на студенти кои избрале дека полагаат било
  17. кој термин. Потоа се изминуваат останатите студенти и се доделуваат во термини.
  18.  
  19. Влез: Се дава прво капацитетот на студенти по термин (т.е. по колку студенти во еден термин може да
  20. полагаат). Следно се дава бројот и списокот на студенти кои истиот ден полагаат и Математика
  21. (според редоследот по кој се пријавиле). Потоа се дава бројот и списокот на останатите студенти
  22. (според редоследот по кој се пријавиле). На крај се дава број и список на студенти кои навистина
  23. полагаат Математика. На излез се печати број на термин, па студентите кои полагаат во тој термин.
  24.  
  25. Име на класа (за Јава): Kolokvium
  26.  
  27. Делумно решение: Задачата се смета за делумно решена доколку се поминати 9 тест примери.
  28.  
  29. Забелешка: При реализација на задачите МОРА да се користат дадените структури, а не да користат помошни структури како низи или сл.
  30.  
  31.  
  32. import java.io.BufferedReader;
  33. import java.io.IOException;
  34. import java.io.InputStreamReader;
  35. import java.util.NoSuchElementException;
  36. import java.util.Scanner;
  37.  
  38. interface Queue<E> {
  39.  
  40.     // Elementi na redicata se objekti od proizvolen tip.
  41.  
  42.     // Metodi za pristap:
  43.  
  44.     public boolean isEmpty ();
  45.     // Vrakja true ako i samo ako redicata e prazena.
  46.  
  47.     public int size ();
  48.     // Ja vrakja dolzinata na redicata.
  49.  
  50.     public E peek ();
  51.     // Go vrakja elementot na vrvot t.e. pocetokot od redicata.
  52.  
  53.     // Metodi za transformacija:
  54.  
  55.     public void clear ();
  56.     // Ja prazni redicata.
  57.  
  58.     public void enqueue (E x);
  59.     // Go dodava x na kraj od redicata.
  60.  
  61.     public E dequeue ();
  62.     // Go otstranuva i vrakja pochetniot element na redicata.
  63.  
  64. }
  65. class ArrayQueue<E> implements Queue<E> {
  66.  
  67.     // Redicata e pretstavena na sledniot nacin:
  68.     // length go sodrzi brojot na elementi.
  69.     // Ako length > 0, togash elementite na redicata se zachuvani vo elems[front...rear-1]
  70.     // Ako rear > front, togash vo  elems[front...maxlength-1] i elems[0...rear-1]
  71.     E[] elems;
  72.     int length, front, rear;
  73.  
  74.     // Konstruktor ...
  75.  
  76.     @SuppressWarnings("unchecked")
  77.     public ArrayQueue (int maxlength) {
  78.         elems = (E[]) new Object[maxlength];
  79.         clear();
  80.     }
  81.  
  82.     public boolean isEmpty () {
  83.         // Vrakja true ako i samo ako redicata e prazena.
  84.         return (length == 0);
  85.     }
  86.  
  87.     public int size () {
  88.         // Ja vrakja dolzinata na redicata.
  89.         return length;
  90.     }
  91.  
  92.     public E peek () {
  93.         // Go vrakja elementot na vrvot t.e. pocetokot od redicata.
  94.         if (length > 0)
  95.             return elems[front];
  96.         else
  97.             throw new NoSuchElementException();
  98.     }
  99.  
  100.     public void clear () {
  101.         // Ja prazni redicata.
  102.         length = 0;
  103.         front = rear = 0;  // arbitrary
  104.     }
  105.  
  106.     public void enqueue (E x) {
  107.         // Go dodava x na kraj od redicata.
  108.         elems[rear++] = x;
  109.         if (rear == elems.length)  rear = 0;
  110.         length++;
  111.     }
  112.  
  113.     public E dequeue () {
  114.         // Go otstranuva i vrakja pochetniot element na redicata.
  115.         if (length > 0) {
  116.             E frontmost = elems[front];
  117.             elems[front++] = null;
  118.             if (front == elems.length)  front = 0;
  119.             length--;
  120.             return frontmost;
  121.         } else
  122.             throw new NoSuchElementException();
  123.     }
  124. }
  125.  
  126. public class Kolokvium {
  127.  
  128.     public static void main(String[] args) throws IOException {
  129.         BufferedReader bf = new BufferedReader(new InputStreamReader(System.in));
  130.         String s = bf.readLine();
  131.         int k = Integer.parseInt(s);
  132.         s = bf.readLine();
  133.         int apsIMat=Integer.parseInt(s);
  134.         String[]elementi=new String[apsIMat];
  135.  
  136.  
  137.  
  138.         for(int i=0;i<apsIMat;i++)
  139.         {
  140.             elementi[i]=bf.readLine();
  141.         }
  142.  
  143.         int ostanati;
  144.         s = bf.readLine();
  145.         ostanati = Integer.parseInt(s);
  146.  
  147.         String[]elementi2=new String[ostanati];
  148.  
  149.         for(int i=0;i<ostanati;i++)
  150.         {
  151.             elementi2[i]=bf.readLine();
  152.             System.out.println(elementi2[i]);
  153.         }
  154.  
  155.         int mat;
  156.         s = bf.readLine();
  157.         mat = Integer.parseInt(s);
  158.  
  159.         String[]matematika=new String[mat];
  160.  
  161.         for(int i=0;i<mat;i++)
  162.         {
  163.             matematika[i]=bf.readLine();
  164.         }
  165.  
  166.         ArrayQueue<String> apsIMatR=new ArrayQueue<>(110);
  167.         ArrayQueue<String> tieStoNeIzlale=new ArrayQueue<>(110);
  168.         ArrayQueue<String> rezult=new ArrayQueue<>(k);
  169.  
  170.         ArrayQueue<String> tieStoIzlazale=new ArrayQueue<>(110);
  171.  
  172.         int termin=1;
  173.         System.out.println(termin);
  174.  
  175.         for(int i=0;i<apsIMat;i++)
  176.         {
  177.             int flag=0;
  178.             for(int j=0;j<mat;j++)
  179.             {
  180.                 if(elementi[i].equals(matematika[j])) {
  181.                     flag = 1;
  182.                     break;
  183.                 }
  184.             }
  185.             if(flag==1)
  186.             {
  187.                 if(rezult.size()<k)
  188.                 {
  189.                     rezult.enqueue(elementi[i]);
  190.                 }
  191.                 else{
  192.                     while(!rezult.isEmpty())
  193.                     {
  194.                         System.out.println(rezult.peek());
  195.                         rezult.dequeue();
  196.                     }
  197.                     rezult.clear();
  198.                     rezult.enqueue(elementi[i]);
  199.                     termin++;
  200.                     System.out.println(termin);
  201.  
  202.                 }
  203.             }
  204.             else
  205.             {
  206.                 tieStoIzlazale.enqueue(elementi[i]);
  207.             }
  208.         }
  209.  
  210.         for(int i=0;i<ostanati;i++)
  211.         {
  212.             if(rezult.size()<k)
  213.             {
  214.                 rezult.enqueue(elementi2[i]);
  215.             }
  216.             else
  217.             {
  218.                 while(!rezult.isEmpty())
  219.                 {
  220.                     System.out.println(rezult.peek());
  221.                     rezult.dequeue();
  222.                 }
  223.                 rezult.clear();
  224.                 rezult.enqueue(elementi2[i]);
  225.                 termin++;
  226.                 System.out.println(termin);
  227.  
  228.             }
  229.         }
  230.  
  231.         while(!tieStoIzlazale.isEmpty())
  232.         {
  233.             if(rezult.size()<k)
  234.             {
  235.  
  236.                 rezult.enqueue(tieStoIzlazale.peek());
  237.             }
  238.             else
  239.             {
  240.                 while(!rezult.isEmpty())
  241.                 {
  242.                     System.out.println(rezult.peek());
  243.                     rezult.dequeue();
  244.                 }
  245.                 rezult.clear();
  246.                 rezult.enqueue(tieStoIzlazale.peek());
  247.                 termin++;
  248.                 System.out.println(termin);
  249.  
  250.             }
  251.             tieStoIzlazale.dequeue();
  252.         }
  253.         while(!rezult.isEmpty()) {
  254.             System.out.println(rezult.peek());
  255.             rezult.dequeue();
  256.         }
  257.  
  258.     }
  259. }
  260.  
Advertisement
Add Comment
Please, Sign In to add comment