Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- import java.util.Scanner;
- import java.util.NoSuchElementException;
- 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 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();
- }
- }
- 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 Gragjanin {
- String imePrezime;
- int lKarta, pasos, vozacka;
- public Gragjanin(String imePrezime, int lKarta, int pasos, int vozacka) {
- this.imePrezime = imePrezime;
- this.lKarta = lKarta;
- this.pasos = pasos;
- this.vozacka = vozacka;
- }
- }
- public class MVR {
- public static void main(String[] args) {
- Scanner br = new Scanner(System.in);
- int N = Integer.parseInt(br.nextLine());
- LinkedQueue<Gragjanin> lKarti = new LinkedQueue<Gragjanin>();
- LinkedQueue<Gragjanin> pasosi = new LinkedQueue<Gragjanin>();
- LinkedQueue<Gragjanin> vozacki = new LinkedQueue<Gragjanin>();
- for (int i = 1; i <= N; i++) {
- String imePrezime = br.nextLine();
- int lKarta = Integer.parseInt(br.nextLine());
- int pasos = Integer.parseInt(br.nextLine());
- int vozacka = Integer.parseInt(br.nextLine());
- Gragjanin covek = new Gragjanin(imePrezime, lKarta, pasos, vozacka);
- if (lKarta == 1)
- lKarti.enqueue(covek);
- else if (pasos == 1)
- pasosi.enqueue(covek);
- else if (vozacka == 1)
- vozacki.enqueue(covek);
- }
- while (!lKarti.isEmpty()) {
- if (lKarti.peek().pasos == 0&&lKarti.peek().vozacka == 0)
- System.out.println(lKarti.dequeue().imePrezime);
- else if (lKarti.peek().pasos == 1)
- pasosi.enqueue(lKarti.dequeue());
- else if (lKarti.peek().vozacka == 1)
- vozacki.enqueue(lKarti.dequeue());
- }
- while (!pasosi.isEmpty()) {
- if (pasosi.peek().vozacka == 0)
- System.out.println(pasosi.dequeue().imePrezime);
- else
- vozacki.enqueue(pasosi.dequeue());
- }
- while (!vozacki.isEmpty()) {
- System.out.println(vozacki.dequeue().imePrezime);
- }
- }
- }
Advertisement
Add Comment
Please, Sign In to add comment