Advertisement
sindi29

KolokviumMatematika

Jan 16th, 2017
77
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Java 6.31 KB | None | 0 0
  1. import java.io.BufferedReader;
  2. import java.io.IOException;
  3. import java.io.InputStreamReader;
  4. import java.util.NoSuchElementException;
  5.  
  6. class SLLNode<E> {
  7.     protected E element;
  8.     protected SLLNode<E> succ;
  9.  
  10.     public SLLNode(E elem, SLLNode<E> succ) {
  11.         this.element = elem;
  12.         this.succ = succ;
  13.     }
  14.  
  15.     @Override
  16.     public String toString() {
  17.         return element.toString();
  18.     }
  19. }
  20.  
  21. interface Queue<E> {
  22.  
  23.     // Elementi na redicata se objekti od proizvolen tip.
  24.  
  25.     // Metodi za pristap:
  26.  
  27.     public boolean isEmpty();
  28.  
  29.     // Vrakja true ako i samo ako redicata e prazena.
  30.  
  31.     public int size();
  32.  
  33.     // Ja vrakja dolzinata na redicata.
  34.  
  35.     public E peek();
  36.  
  37.     // Go vrakja elementot na vrvot t.e. pocetokot od redicata.
  38.  
  39.     // Metodi za transformacija:
  40.  
  41.     public void clear();
  42.  
  43.     // Ja prazni redicata.
  44.  
  45.     public void enqueue(E x);
  46.  
  47.     // Go dodava x na kraj od redicata.
  48.  
  49.     public E dequeue();
  50.     // Go otstranuva i vrakja pochetniot element na redicata.
  51.  
  52. }
  53.  
  54. class LinkedQueue<E> implements Queue<E> {
  55.  
  56.     // Redicata e pretstavena na sledniot nacin:
  57.     // length go sodrzi brojot na elementi.
  58.     // Elementite se zachuvuvaat vo jazli dod SLL
  59.     // front i rear se linkovi do prviot i posledniot jazel soodvetno.
  60.     SLLNode<E> front, rear;
  61.     int length;
  62.  
  63.     // Konstruktor ...
  64.  
  65.     public LinkedQueue() {
  66.         clear();
  67.     }
  68.  
  69.     public boolean isEmpty() {
  70.         // Vrakja true ako i samo ako redicata e prazena.
  71.         return (length == 0);
  72.     }
  73.  
  74.     public int size() {
  75.         // Ja vrakja dolzinata na redicata.
  76.         return length;
  77.     }
  78.  
  79.     public E peek() {
  80.         // Go vrakja elementot na vrvot t.e. pocetokot od redicata.
  81.         if (front == null)
  82.             throw new NoSuchElementException();
  83.         return front.element;
  84.     }
  85.  
  86.     public void clear() {
  87.         // Ja prazni redicata.
  88.         front = rear = null;
  89.         length = 0;
  90.     }
  91.  
  92.     public void enqueue(E x) {
  93.         // Go dodava x na kraj od redicata.
  94.         SLLNode<E> latest = new SLLNode<E>(x, null);
  95.         if (rear != null) {
  96.             rear.succ = latest;
  97.             rear = latest;
  98.         } else
  99.             front = rear = latest;
  100.         length++;
  101.     }
  102.  
  103.     public E dequeue() {
  104.         // Go otstranuva i vrakja pochetniot element na redicata.
  105.         if (front != null) {
  106.             E frontmost = front.element;
  107.             front = front.succ;
  108.             if (front == null)
  109.                 rear = null;
  110.             length--;
  111.             return frontmost;
  112.         } else
  113.             throw new NoSuchElementException();
  114.     }
  115. }
  116.  
  117. class ArrayQueue<E> implements Queue<E> {
  118.  
  119.     // Redicata e pretstavena na sledniot nacin:
  120.     // length go sodrzi brojot na elementi.
  121.     // Ako length > 0, togash elementite na redicata se zachuvani vo
  122.     // elems[front...rear-1]
  123.     // Ako rear > front, togash vo elems[front...maxlength-1] i
  124.     // elems[0...rear-1]
  125.     E[] elems;
  126.     int length, front, rear;
  127.  
  128.     // Konstruktor ...
  129.  
  130.     @SuppressWarnings("unchecked")
  131.     public ArrayQueue(int maxlength) {
  132.         elems = (E[]) new Object[maxlength];
  133.         clear();
  134.     }
  135.  
  136.     public boolean isEmpty() {
  137.         // Vrakja true ako i samo ako redicata e prazena.
  138.         return (length == 0);
  139.     }
  140.  
  141.     public int size() {
  142.         // Ja vrakja dolzinata na redicata.
  143.         return length;
  144.     }
  145.  
  146.     public E peek() {
  147.         // Go vrakja elementot na vrvot t.e. pocetokot od redicata.
  148.         if (length > 0)
  149.             return elems[front];
  150.         else
  151.             throw new NoSuchElementException();
  152.     }
  153.  
  154.     public void clear() {
  155.         // Ja prazni redicata.
  156.         length = 0;
  157.         front = rear = 0; // arbitrary
  158.     }
  159.  
  160.     public void enqueue(E x) {
  161.         // Go dodava x na kraj od redicata.
  162.         elems[rear++] = x;
  163.         if (rear == elems.length)
  164.             rear = 0;
  165.         length++;
  166.     }
  167.  
  168.     public E dequeue() {
  169.         // Go otstranuva i vrakja pochetniot element na redicata.
  170.         if (length > 0) {
  171.             E frontmost = elems[front];
  172.             elems[front++] = null;
  173.             if (front == elems.length)
  174.                 front = 0;
  175.             length--;
  176.             return frontmost;
  177.         } else
  178.             throw new NoSuchElementException();
  179.     }
  180. }
  181.  
  182. public class QueueKolokviumska2013grupa1 {
  183.  
  184.     public static void Kolokvium(
  185.             ArrayQueue<String> redPoklopuvanjeSoMatematika,
  186.             ArrayQueue<String> redPolagamVoBiloKojTermin,
  187.             ArrayQueue<String> redVistinskiStudenti, int t) {
  188.         String c;
  189.         String d;
  190.         int br = 0;
  191.         int i = 1, termin = 1;
  192.         /*
  193.          * ArrayQueue<String> red1=new ArrayQueue<String>(100);
  194.          * ArrayQueue<String> red2=new ArrayQueue<String>(100);
  195.          * while(!redVistinskiStudenti.isEmpty()) { c=(Student)
  196.          * redVistinskiStudenti.dequeue(); red1.enqueue(c); red2.enqueue(c);
  197.          *
  198.          * }
  199.          */
  200.         while (!redPoklopuvanjeSoMatematika.isEmpty()) {
  201.             if (br == t) {
  202.                 br = 0;
  203.                 termin++;
  204.                
  205.                 System.out.println(br+ " "+termin);
  206.  
  207.             }
  208.  
  209.             // System.out.println(student);
  210.             String student = redPoklopuvanjeSoMatematika.dequeue();
  211.             int flag = 0;
  212.             for (i = 0; i < redVistinskiStudenti.size(); i++) {
  213.                 String studentVistinski = redVistinskiStudenti.dequeue();
  214.                 if (student.equals(studentVistinski)) {
  215.                     flag = 1;
  216.                     br++;
  217.                     if (br == 1) {
  218.                         System.out.println(termin);
  219.                     }
  220.                     System.out.println(student);
  221.                    
  222.                     break;
  223.                 } else
  224.                     redVistinskiStudenti.enqueue(studentVistinski);
  225.  
  226.             }
  227.             if (flag == 0)
  228.                 redPolagamVoBiloKojTermin.enqueue(student);
  229.         }
  230.  
  231.         while (!redPolagamVoBiloKojTermin.isEmpty()) {
  232.            
  233.            
  234.             if(br==t)
  235.             {
  236.                 br=0;
  237.                 termin++;
  238.                 System.out.println(termin);
  239.             }
  240.             br++;
  241.        
  242.             String s = redPolagamVoBiloKojTermin.dequeue();
  243.             System.out.println(s);
  244.            
  245.  
  246.         }
  247.     }
  248.  
  249.     public static void main(String[] args) throws IOException {
  250.         BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
  251.         ArrayQueue<String> redPoklopuvanjeSoMatematika = new ArrayQueue<String>(
  252.                 100);
  253.         ArrayQueue<String> redPolagamVoBiloKojTermin = new ArrayQueue<String>(
  254.                 100);
  255.         ArrayQueue<String> redVistinskiStudenti = new ArrayQueue<String>(100);
  256.         int N, i, M, K;
  257.         int t;
  258.         String s;
  259.         s = br.readLine();
  260.         t = Integer.parseInt(s);
  261.         String imePrezime;
  262.         s = br.readLine();
  263.         N = Integer.parseInt(s);
  264.         for (i = 0; i < N; i++) {
  265.             imePrezime = br.readLine();
  266.             redPoklopuvanjeSoMatematika.enqueue(imePrezime);
  267.  
  268.         }
  269.         s = br.readLine();
  270.         M = Integer.parseInt(s);
  271.         for (i = 0; i < M; i++) {
  272.             imePrezime = br.readLine();
  273.             redPolagamVoBiloKojTermin.enqueue(imePrezime);
  274.  
  275.         }
  276.         s = br.readLine();
  277.         K = Integer.parseInt(s);
  278.         for (i = 0; i < K; i++) {
  279.             imePrezime = br.readLine();
  280.             redVistinskiStudenti.enqueue(imePrezime);
  281.  
  282.         }
  283.         Kolokvium(redPoklopuvanjeSoMatematika, redPolagamVoBiloKojTermin,
  284.                 redVistinskiStudenti, t);
  285.     }
  286. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement