Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- import java.io.BufferedReader;
- import java.io.IOException;
- import java.io.InputStreamReader;
- import java.util.NoSuchElementException;
- class SLLNode<E> {
- protected E element;
- protected SLLNode<E> succ;
- public SLLNode(E elem, SLLNode<E> succ) {
- this.element = elem;
- this.succ = succ;
- }
- @Override
- public String toString() {
- return element.toString();
- }
- }
- interface Queue<E> {
- // Elementi na redicata se objekti od proizvolen tip.
- // Metodi za pristap:
- public boolean isEmpty();
- // Vrakja true ako i samo ako redicata e prazena.
- public int size();
- // Ja vrakja dolzinata na redicata.
- public E peek();
- // Go vrakja elementot na vrvot t.e. pocetokot od redicata.
- // Metodi za transformacija:
- public void clear();
- // Ja prazni redicata.
- public void enqueue(E x);
- // Go dodava x na kraj od redicata.
- public E dequeue();
- // Go otstranuva i vrakja pochetniot element na redicata.
- }
- class LinkedQueue<E> implements Queue<E> {
- // Redicata e pretstavena na sledniot nacin:
- // length go sodrzi brojot na elementi.
- // Elementite se zachuvuvaat vo jazli dod SLL
- // front i rear se linkovi do prviot i posledniot jazel soodvetno.
- SLLNode<E> front, rear;
- int length;
- // Konstruktor ...
- public LinkedQueue() {
- clear();
- }
- public boolean isEmpty() {
- // Vrakja true ako i samo ako redicata e prazena.
- return (length == 0);
- }
- public int size() {
- // Ja vrakja dolzinata na redicata.
- return length;
- }
- public E peek() {
- // Go vrakja elementot na vrvot t.e. pocetokot od redicata.
- if (front == null)
- throw new NoSuchElementException();
- return front.element;
- }
- public void clear() {
- // Ja prazni redicata.
- front = rear = null;
- length = 0;
- }
- public void enqueue(E x) {
- // Go dodava x na kraj od redicata.
- SLLNode<E> latest = new SLLNode<E>(x, null);
- if (rear != null) {
- rear.succ = latest;
- rear = latest;
- } else
- front = rear = latest;
- length++;
- }
- public E dequeue() {
- // Go otstranuva i vrakja pochetniot element na redicata.
- if (front != null) {
- E frontmost = front.element;
- front = front.succ;
- if (front == null)
- rear = null;
- length--;
- return frontmost;
- } else
- throw new NoSuchElementException();
- }
- }
- class ArrayQueue<E> implements Queue<E> {
- // Redicata e pretstavena na sledniot nacin:
- // length go sodrzi brojot na elementi.
- // Ako length > 0, togash elementite na redicata se zachuvani vo
- // elems[front...rear-1]
- // Ako rear > front, togash vo elems[front...maxlength-1] i
- // elems[0...rear-1]
- E[] elems;
- int length, front, rear;
- // Konstruktor ...
- @SuppressWarnings("unchecked")
- public ArrayQueue(int maxlength) {
- elems = (E[]) new Object[maxlength];
- clear();
- }
- public boolean isEmpty() {
- // Vrakja true ako i samo ako redicata e prazena.
- return (length == 0);
- }
- public int size() {
- // Ja vrakja dolzinata na redicata.
- return length;
- }
- public E peek() {
- // Go vrakja elementot na vrvot t.e. pocetokot od redicata.
- if (length > 0)
- return elems[front];
- else
- throw new NoSuchElementException();
- }
- public void clear() {
- // Ja prazni redicata.
- length = 0;
- front = rear = 0; // arbitrary
- }
- public void enqueue(E x) {
- // Go dodava x na kraj od redicata.
- elems[rear++] = x;
- if (rear == elems.length)
- rear = 0;
- length++;
- }
- public E dequeue() {
- // Go otstranuva i vrakja pochetniot element na redicata.
- if (length > 0) {
- E frontmost = elems[front];
- elems[front++] = null;
- if (front == elems.length)
- front = 0;
- length--;
- return frontmost;
- } else
- throw new NoSuchElementException();
- }
- }
- public class QueueKolokviumska2013grupa1 {
- public static void Kolokvium(
- ArrayQueue<String> redPoklopuvanjeSoMatematika,
- ArrayQueue<String> redPolagamVoBiloKojTermin,
- ArrayQueue<String> redVistinskiStudenti, int t) {
- String c;
- String d;
- int br = 0;
- int i = 1, termin = 1;
- /*
- * ArrayQueue<String> red1=new ArrayQueue<String>(100);
- * ArrayQueue<String> red2=new ArrayQueue<String>(100);
- * while(!redVistinskiStudenti.isEmpty()) { c=(Student)
- * redVistinskiStudenti.dequeue(); red1.enqueue(c); red2.enqueue(c);
- *
- * }
- */
- while (!redPoklopuvanjeSoMatematika.isEmpty()) {
- if (br == t) {
- br = 0;
- termin++;
- System.out.println(br+ " "+termin);
- }
- // System.out.println(student);
- String student = redPoklopuvanjeSoMatematika.dequeue();
- int flag = 0;
- for (i = 0; i < redVistinskiStudenti.size(); i++) {
- String studentVistinski = redVistinskiStudenti.dequeue();
- if (student.equals(studentVistinski)) {
- flag = 1;
- br++;
- if (br == 1) {
- System.out.println(termin);
- }
- System.out.println(student);
- break;
- } else
- redVistinskiStudenti.enqueue(studentVistinski);
- }
- if (flag == 0)
- redPolagamVoBiloKojTermin.enqueue(student);
- }
- while (!redPolagamVoBiloKojTermin.isEmpty()) {
- if(br==t)
- {
- br=0;
- termin++;
- System.out.println(termin);
- }
- br++;
- String s = redPolagamVoBiloKojTermin.dequeue();
- System.out.println(s);
- }
- }
- public static void main(String[] args) throws IOException {
- BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
- ArrayQueue<String> redPoklopuvanjeSoMatematika = new ArrayQueue<String>(
- 100);
- ArrayQueue<String> redPolagamVoBiloKojTermin = new ArrayQueue<String>(
- 100);
- ArrayQueue<String> redVistinskiStudenti = new ArrayQueue<String>(100);
- int N, i, M, K;
- int t;
- String s;
- s = br.readLine();
- t = Integer.parseInt(s);
- String imePrezime;
- s = br.readLine();
- N = Integer.parseInt(s);
- for (i = 0; i < N; i++) {
- imePrezime = br.readLine();
- redPoklopuvanjeSoMatematika.enqueue(imePrezime);
- }
- s = br.readLine();
- M = Integer.parseInt(s);
- for (i = 0; i < M; i++) {
- imePrezime = br.readLine();
- redPolagamVoBiloKojTermin.enqueue(imePrezime);
- }
- s = br.readLine();
- K = Integer.parseInt(s);
- for (i = 0; i < K; i++) {
- imePrezime = br.readLine();
- redVistinskiStudenti.enqueue(imePrezime);
- }
- Kolokvium(redPoklopuvanjeSoMatematika, redPolagamVoBiloKojTermin,
- redVistinskiStudenti, t);
- }
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement