Advertisement
dzocesrce

[APS] FINKI Assistants

Aug 30th, 2023
429
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Java 6.66 KB | None | 0 0
  1. // Asistentite na FINKI treba da se rasporedat kako testatori vo edna ispitna sesija po povekje predmeti. Za sekoj predmet se znae vo kolku prostorii se polaga, odnosno kolku asistenti zahteva. Problemot nastanal sto nekoi od asistentite zaminale na sluzbeno patuvanje i nema da mozat da prisustvuvaat na ispitnata sesija. Potrebno e da se napravi rasporeduvanje taka sto asistentite se selektiraat kako vo redica. Koga ke se raspredat site asistenti po ednas, pocnuva odnovo rasporeduvanjeto od prviot asistent itn.
  2. import java.util.Collection;
  3. import java.util.Iterator;
  4. import java.util.NoSuchElementException;
  5. import java.util.Queue;
  6. import java.util.Scanner;
  7. import java.util.*;
  8. import java.io.*;
  9. class ArrayQueue<E> implements Queue<E> {
  10.  
  11.     // Redicata e pretstavena na sledniot nacin:
  12.     // length go sodrzi brojot na elementi.
  13.     // Ako length > 0, togash elementite na redicata se zachuvani vo elems[front...rear-1]
  14.     // Ako rear > front, togash vo  elems[front...maxlength-1] i elems[0...rear-1]
  15.     E[] elems;
  16.     int length, front, rear;
  17.  
  18.     // Konstruktor ...
  19.  
  20.     @SuppressWarnings("unchecked")
  21.     public ArrayQueue (int maxlength) {
  22.         elems = (E[]) new Object[maxlength];
  23.         clear();
  24.     }
  25.  
  26.     public boolean isEmpty () {
  27.         // Vrakja true ako i samo ako redicata e prazena.
  28.         return (length == 0);
  29.     }
  30.  
  31.     public int size () {
  32.         // Ja vrakja dolzinata na redicata.
  33.         return length;
  34.     }
  35.  
  36.     public E peek () {
  37.         // Go vrakja elementot na vrvot t.e. pocetokot od redicata.
  38.         if (length > 0)
  39.             return elems[front];
  40.         else
  41.             throw new NoSuchElementException();
  42.     }
  43.  
  44.     public void clear () {
  45.         // Ja prazni redicata.
  46.         length = 0;
  47.         front = rear = 0;  // arbitrary
  48.     }
  49.  
  50.     public void enqueue (E x) {
  51.         // Go dodava x na kraj od redicata.
  52.         elems[rear++] = x;
  53.         if (rear == elems.length)  rear = 0;
  54.         length++;
  55.     }
  56.  
  57.     public E dequeue () {
  58.         // Go otstranuva i vrakja pochetniot element na redicata.
  59.         if (length > 0) {
  60.             E frontmost = elems[front];
  61.             elems[front++] = null;
  62.             if (front == elems.length)  front = 0;
  63.             length--;
  64.             return frontmost;
  65.         } else
  66.             throw new NoSuchElementException();
  67.     }
  68.  
  69.     @Override
  70.     public boolean addAll(Collection<? extends E> arg0) {
  71.         // TODO Auto-generated method stub
  72.         return false;
  73.     }
  74.  
  75.     @Override
  76.     public boolean contains(Object arg0) {
  77.         // TODO Auto-generated method stub
  78.         return false;
  79.     }
  80.  
  81.     @Override
  82.     public boolean containsAll(Collection<?> arg0) {
  83.         // TODO Auto-generated method stub
  84.         return false;
  85.     }
  86.  
  87.     @Override
  88.     public Iterator<E> iterator() {
  89.         // TODO Auto-generated method stub
  90.         return null;
  91.     }
  92.  
  93.     @Override
  94.     public boolean remove(Object arg0) {
  95.         // TODO Auto-generated method stub
  96.         return false;
  97.     }
  98.  
  99.     @Override
  100.     public boolean removeAll(Collection<?> arg0) {
  101.         // TODO Auto-generated method stub
  102.         return false;
  103.     }
  104.  
  105.     @Override
  106.     public boolean retainAll(Collection<?> arg0) {
  107.         // TODO Auto-generated method stub
  108.         return false;
  109.     }
  110.  
  111.     @Override
  112.     public Object[] toArray() {
  113.         // TODO Auto-generated method stub
  114.         return null;
  115.     }
  116.  
  117.     @Override
  118.     public <T> T[] toArray(T[] arg0) {
  119.         // TODO Auto-generated method stub
  120.         return null;
  121.     }
  122.  
  123.     @Override
  124.     public boolean add(E arg0) {
  125.         // TODO Auto-generated method stub
  126.         return false;
  127.     }
  128.  
  129.     @Override
  130.     public E element() {
  131.         // TODO Auto-generated method stub
  132.         return null;
  133.     }
  134.  
  135.     @Override
  136.     public boolean offer(E arg0) {
  137.         // TODO Auto-generated method stub
  138.         return false;
  139.     }
  140.  
  141.     @Override
  142.     public E poll() {
  143.         // TODO Auto-generated method stub
  144.         return null;
  145.     }
  146.  
  147.     @Override
  148.     public E remove() {
  149.         // TODO Auto-generated method stub
  150.         return null;
  151.     }
  152. }
  153. public class Asistenti {
  154.     public static void main(String[] args) {
  155.         Scanner input= new Scanner(System.in);
  156.         int numAssisstants= Integer.parseInt(input.nextLine());
  157.         ArrayQueue<String> assisstants= new ArrayQueue<String>(numAssisstants);
  158.         String[] asistenti= input.nextLine().split("\\s+");
  159.         for(int i=0;i<numAssisstants;i++){
  160.             assisstants.enqueue(asistenti[i]);
  161.         }
  162.         int numSubjects= Integer.parseInt(input.nextLine());
  163.         String[] predmeti= new String[numSubjects];
  164.         Integer[] br_asistenti= new Integer[numSubjects];
  165.         for(int i=0;i<numSubjects;i++){
  166.             String[] info= input.nextLine().split("\\s+");
  167.             predmeti[i]= info[0];
  168.             br_asistenti[i]= Integer.parseInt(info[1]);
  169.         }
  170.         int numMissing= Integer.parseInt(input.nextLine());
  171.         numAssisstants-=numMissing;
  172.         String[] missing_assistants= input.nextLine().split("\\s+");
  173.         ArrayQueue<String> temp= new ArrayQueue<>(numAssisstants);
  174.         while(!assisstants.isEmpty()){
  175.             int flag=0;
  176.             for(int i=0;i <numMissing;i++){
  177.                 if(assisstants.peek().equals(missing_assistants[i])){
  178.                     assisstants.dequeue();
  179.                     flag=1;
  180.                     break;
  181.                 }
  182.             }
  183.             if(flag==1) continue;
  184.             temp.enqueue(assisstants.dequeue());
  185.         }
  186.         while(!temp.isEmpty()) assisstants.enqueue(temp.dequeue());
  187.         //while(!assisstants.isEmpty()) System.out.println(assisstants.dequeue());
  188.         for(int i=0;i<numAssisstants;i++){
  189.             System.out.println(predmeti[i]);
  190.             System.out.println(br_asistenti[i]);
  191.             for(int j=0;j<br_asistenti[i];j++){
  192.                 System.out.println(assisstants.peek());
  193.                 assisstants.enqueue(assisstants.dequeue());
  194.             }
  195.         }
  196.     }
  197.  
  198. }
  199. /*
  200. Sample input
  201. 4
  202. IlinkaIvanoska IgorKulev MagdalenaKostoska HristinaMihajloska
  203. 3
  204. APS 3
  205. MIS 1
  206. OOS 2
  207. 1
  208. HristinaMihajloska
  209.  
  210. Sample output
  211. APS
  212. 3
  213. IlinkaIvanoska
  214. IgorKulev
  215. MagdalenaKostoska
  216. MIS
  217. 1
  218. IlinkaIvanoska
  219. OOS
  220. 2
  221. IgorKulev
  222. MagdalenaKostoska
  223.  
  224. Sample input
  225. 6
  226. IlinkaIvanoska DzoceSrce OmniScient IgorKulev MagdalenaKostoska HristinaMihajloska
  227. 4
  228. APS 4
  229. NP 1
  230. SP 4
  231. KMIB 3
  232. 2
  233. HristinaMihajloska IlinkaIvanoska
  234. Sample output
  235. APS
  236. 4
  237. DzoceSrce
  238. OmniScient
  239. IgorKulev
  240. MagdalenaKostoska
  241. NP
  242. 1
  243. DzoceSrce
  244. SP
  245. 4
  246. OmniScient
  247. IgorKulev
  248. MagdalenaKostoska
  249. DzoceSrce
  250. KMIB
  251. 3
  252. OmniScient
  253. IgorKulev
  254. MagdalenaKostoska
  255.  */
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement