Crazy

Шалтерот на МВР

Nov 4th, 2017
543
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Java 4.50 KB | None | 0 0
  1. import java.util.Scanner;
  2. import java.util.NoSuchElementException;
  3.  
  4. interface Queue<E> {
  5.  
  6.     // Elementi na redicata se objekti od proizvolen tip.
  7.  
  8.     // Metodi za pristap:
  9.  
  10.     public boolean isEmpty();
  11.     // Vrakja true ako i samo ako redicata e prazena.
  12.  
  13.     public int size();
  14.     // Ja vrakja dolzinata na redicata.
  15.  
  16.     public E peek();
  17.     // Go vrakja elementot na vrvot t.e. pocetokot od redicata.
  18.  
  19.     // Metodi za transformacija:
  20.  
  21.     public void clear();
  22.     // Ja prazni redicata.
  23.  
  24.     public void enqueue(E x);
  25.     // Go dodava x na kraj od redicata.
  26.  
  27.     public E dequeue();
  28.     // Go otstranuva i vrakja pochetniot element na redicata.
  29.  
  30. }
  31.  
  32. class SLLNode<E> {
  33.     protected E element;
  34.     protected SLLNode<E> succ;
  35.  
  36.     public SLLNode(E elem, SLLNode<E> succ) {
  37.         this.element = elem;
  38.         this.succ = succ;
  39.     }
  40.  
  41.     @Override
  42.     public String toString() {
  43.         return element.toString();
  44.     }
  45. }
  46.  
  47. class LinkedQueue<E> implements Queue<E> {
  48.  
  49.     // Redicata e pretstavena na sledniot nacin:
  50.     // length go sodrzi brojot na elementi.
  51.     // Elementite se zachuvuvaat vo jazli dod SLL
  52.     // front i rear se linkovi do prviot i posledniot jazel soodvetno.
  53.     SLLNode<E> front, rear;
  54.     int length;
  55.  
  56.     // Konstruktor ...
  57.  
  58.     public LinkedQueue() {
  59.         clear();
  60.     }
  61.  
  62.     public boolean isEmpty() {
  63.         // Vrakja true ako i samo ako redicata e prazena.
  64.         return (length == 0);
  65.     }
  66.  
  67.     public int size() {
  68.         // Ja vrakja dolzinata na redicata.
  69.         return length;
  70.     }
  71.  
  72.     public E peek() {
  73.         // Go vrakja elementot na vrvot t.e. pocetokot od redicata.
  74.         if (front == null)
  75.             throw new NoSuchElementException();
  76.         return front.element;
  77.     }
  78.  
  79.     public void clear() {
  80.         // Ja prazni redicata.
  81.         front = rear = null;
  82.         length = 0;
  83.     }
  84.  
  85.     public void enqueue(E x) {
  86.         // Go dodava x na kraj od redicata.
  87.         SLLNode<E> latest = new SLLNode<E>(x, null);
  88.         if (rear != null) {
  89.             rear.succ = latest;
  90.             rear = latest;
  91.         } else
  92.             front = rear = latest;
  93.         length++;
  94.     }
  95.  
  96.     public E dequeue() {
  97.         // Go otstranuva i vrakja pochetniot element na redicata.
  98.         if (front != null) {
  99.             E frontmost = front.element;
  100.             front = front.succ;
  101.             if (front == null) rear = null;
  102.             length--;
  103.             return frontmost;
  104.         } else
  105.             throw new NoSuchElementException();
  106.     }
  107.  
  108. }
  109.  
  110. class Gragjanin {
  111.     String imePrezime;
  112.     int lKarta, pasos, vozacka;
  113.  
  114.     public Gragjanin(String imePrezime, int lKarta, int pasos, int vozacka) {
  115.         this.imePrezime = imePrezime;
  116.         this.lKarta = lKarta;
  117.         this.pasos = pasos;
  118.         this.vozacka = vozacka;
  119.     }
  120. }
  121.  
  122. public class MVR {
  123.  
  124.     public static void main(String[] args) {
  125.  
  126.         Scanner br = new Scanner(System.in);
  127.         int N = Integer.parseInt(br.nextLine());
  128.         LinkedQueue<Gragjanin> lKarti = new LinkedQueue<Gragjanin>();
  129.         LinkedQueue<Gragjanin> pasosi = new LinkedQueue<Gragjanin>();
  130.         LinkedQueue<Gragjanin> vozacki = new LinkedQueue<Gragjanin>();
  131.         for (int i = 1; i <= N; i++) {
  132.             String imePrezime = br.nextLine();
  133.             int lKarta = Integer.parseInt(br.nextLine());
  134.             int pasos = Integer.parseInt(br.nextLine());
  135.             int vozacka = Integer.parseInt(br.nextLine());
  136.             Gragjanin covek = new Gragjanin(imePrezime, lKarta, pasos, vozacka);
  137.             if (lKarta == 1)
  138.                 lKarti.enqueue(covek);
  139.             else if (pasos == 1)
  140.                 pasosi.enqueue(covek);
  141.             else if (vozacka == 1)
  142.                 vozacki.enqueue(covek);
  143.         }
  144.         while (!lKarti.isEmpty()) {
  145.             if (lKarti.peek().pasos == 0&&lKarti.peek().vozacka == 0)
  146.                 System.out.println(lKarti.dequeue().imePrezime);
  147.             else if (lKarti.peek().pasos == 1)
  148.                 pasosi.enqueue(lKarti.dequeue());
  149.             else if (lKarti.peek().vozacka == 1)
  150.                 vozacki.enqueue(lKarti.dequeue());
  151.         }
  152.         while (!pasosi.isEmpty()) {
  153.             if (pasosi.peek().vozacka == 0)
  154.                 System.out.println(pasosi.dequeue().imePrezime);
  155.             else
  156.                 vozacki.enqueue(pasosi.dequeue());
  157.         }
  158.         while (!vozacki.isEmpty()) {
  159.             System.out.println(vozacki.dequeue().imePrezime);
  160.         }
  161.     }
  162.  
  163. }
Advertisement
Add Comment
Please, Sign In to add comment