Advertisement
duplicityyy

[АПС] - Шалтерот на МВР

Aug 25th, 2020
728
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Java 7.34 KB | None | 0 0
  1. Шалтерот на МВР Problem 3 (0 / 3)
  2. Луѓето доаѓаат наутро во МВР за да извадат еден или повеќе документи.
  3. Документите може да бидат:
  4. 1. Лична карта
  5. 2. Пасош
  6. 3. Возачка дозвола
  7. Кога се отвора шалтерот прво се услужуваат луѓето кои чекаат за лична карта, па потоа оние за пасош и на крај оние за возачка дозвола.
  8. Секој човек кога ќе дојде си застанува во редицата за соодветната исправа која ја вади (т.е. или во редицата за лични карти или во редицата за пасоши или во редицата за возачки дозволи). Доколку еден човек има повеќе документи за вадење прво вади лична карта, па пасош и на крај возачка. Така ако еден човек треба да вади и лична карта и возачка дозвола прво застанува во редицата за лични карти и откако ќе заврши таму оди на крајот на редицата за возачки дозволи.
  9.  
  10. Влез: Првиот ред означува колку луѓе вкупно дошле во МВР. Потоа за секој човек се внесуваат четири реда, во првиот е името и презимето на човекот, а во останатите три реда се кажува кој документ соодветно (лична карта, пасош и возачка) треба да се земе, притоа 1 значи дека треба да се земе тој документ, 0 значи дека не треба да се земе.
  11.  
  12. На пример:
  13.  
  14. Aleksandar Aleksandrovski
  15. 1
  16. 0
  17. 1
  18. означува дека Александар Александровски ќе вади и лична карта и возачка дозвола, но нема да вади пасош.
  19. Излез: Ги печати имињата на луѓето по редоследот по кој завршуваат со вадење на документи.
  20.  
  21. Име на класата (Java): MVR
  22.  
  23. Sample input
  24. 4
  25. Aleksandar Aleksandrovski
  26. 0
  27. 0
  28. 1
  29. Petre Petreski
  30. 1
  31. 0
  32. 0
  33. Branka Brankovska
  34. 0
  35. 0
  36. 1
  37. Jana Janevska
  38. 0
  39. 1
  40. 0
  41.  
  42. Sample output
  43. Petre Petreski
  44. Jana Janevska
  45. Aleksandar Aleksandrovski
  46. Branka Brankovska
  47.  
  48. _______________________________________________________________________________________________________________________________________
  49.  
  50. import java.util.Scanner;
  51. import java.util.*;
  52.  
  53.  
  54. public class Main {
  55.  
  56.     static class Gragjanin {
  57.         public String imePrezime;
  58.         public int ID;
  59.         public int pasos;
  60.         public int vozacka;
  61.  
  62.         public Gragjanin(String imePrezime, int ID, int pasos, int vozacka) {
  63.             this.imePrezime = imePrezime;
  64.             this.ID = ID;
  65.             this.pasos = pasos;
  66.             this.vozacka = vozacka;
  67.         }
  68.  
  69.     }
  70.  
  71.     static interface Queue<E> {
  72.         public boolean isEmpty();
  73.  
  74.         public int size();
  75.  
  76.         public E peek();
  77.  
  78.         public void clear();
  79.  
  80.         public void enqueue(E x);
  81.  
  82.         public E dequeue();
  83.     }
  84.  
  85.     static class LinkedQueue<E> implements Queue<E> {
  86.  
  87.         // Redicata e pretstavena na sledniot nacin:
  88.         // length go sodrzi brojot na elementi.
  89.         // Elementite se zachuvuvaat vo jazli dod SLL
  90.         // front i rear se linkovi do prviot i posledniot jazel soodvetno.
  91.         SLLNode<E> front, rear;
  92.         int length;
  93.  
  94.         // Konstruktor ...
  95.  
  96.         public LinkedQueue() {
  97.             clear();
  98.         }
  99.  
  100.         public boolean isEmpty() {
  101.             // Vrakja true ako i samo ako redicata e prazena.
  102.             return (length == 0);
  103.         }
  104.  
  105.         public int size() {
  106.             // Ja vrakja dolzinata na redicata.
  107.             return length;
  108.         }
  109.  
  110.         public E peek() {
  111.             // Go vrakja elementot na vrvot t.e. pocetokot od redicata.
  112.             if (front == null)
  113.                 throw new NoSuchElementException();
  114.             return front.element;
  115.         }
  116.  
  117.         public void clear() {
  118.             // Ja prazni redicata.
  119.             front = rear = null;
  120.             length = 0;
  121.         }
  122.  
  123.         public void enqueue(E x) {
  124.             // Go dodava x na kraj od redicata.
  125.             SLLNode<E> latest = new SLLNode<E>(x, null);
  126.             if (rear != null) {
  127.                 rear.succ = latest;
  128.                 rear = latest;
  129.             } else
  130.                 front = rear = latest;
  131.             length++;
  132.         }
  133.  
  134.         public E dequeue() {
  135.             // Go otstranuva i vrakja pochetniot element na redicata.
  136.             if (front != null) {
  137.                 E frontmost = front.element;
  138.                 front = front.succ;
  139.                 if (front == null) rear = null;
  140.                 length--;
  141.                 return frontmost;
  142.             } else
  143.                 throw new NoSuchElementException();
  144.         }
  145.  
  146.     }
  147.  
  148.     static class SLLNode<E> {
  149.         protected E element;
  150.         protected SLLNode<E> succ;
  151.  
  152.         public SLLNode(E elem, SLLNode<E> succ) {
  153.             this.element = elem;
  154.             this.succ = succ;
  155.         }
  156.  
  157.         @Override
  158.         public String toString() {
  159.             return element.toString();
  160.         }
  161.     }
  162.  
  163.     public static void srediMVR(LinkedQueue<Gragjanin> vlez) {
  164.         LinkedQueue<Gragjanin> licnaKarta = new LinkedQueue<>();
  165.         LinkedQueue<Gragjanin> pasosh = new LinkedQueue<>();
  166.         LinkedQueue<Gragjanin> vozDozvola = new LinkedQueue<>();
  167.  
  168.         while(!vlez.isEmpty()){
  169.             Gragjanin zbr = vlez.dequeue();
  170.             if(zbr.ID == 1){
  171.                 licnaKarta.enqueue(zbr);
  172.             }if(zbr.pasos == 1){
  173.                 pasosh.enqueue(zbr);
  174.             }if(zbr.vozacka == 1){
  175.                 vozDozvola.enqueue(zbr);
  176.             }
  177.         }
  178.  
  179.         while(!licnaKarta.isEmpty()){
  180.             Gragjanin zbr = licnaKarta.dequeue();
  181.             if(zbr.ID == 1)
  182.                 System.out.println(zbr.imePrezime);
  183.         }
  184.  
  185.         while(!pasosh.isEmpty()){
  186.             Gragjanin zbr = pasosh.dequeue();
  187.             if(zbr.pasos == 1 ){
  188.                 System.out.println(zbr.imePrezime);
  189.             }
  190.         }
  191.  
  192.         while(!vozDozvola.isEmpty()){
  193.             Gragjanin zbr = vozDozvola.dequeue();
  194.             if(zbr.vozacka == 1){
  195.                 System.out.println(zbr.imePrezime);
  196.             }
  197.         }
  198.  
  199.     }
  200.  
  201.  
  202.     public static void main(String[] args) {
  203.  
  204.         Scanner br = new Scanner(System.in);
  205.  
  206.         LinkedQueue<Gragjanin> vlez = new LinkedQueue<>();
  207.  
  208.         int N = Integer.parseInt(br.nextLine());
  209.         for (int i = 1; i <= N; i++) {
  210.             String imePrezime = br.nextLine();
  211.             int ID = Integer.parseInt(br.nextLine());
  212.             int pasos = Integer.parseInt(br.nextLine());
  213.             int vozacka = Integer.parseInt(br.nextLine());
  214.             Gragjanin covek = new Gragjanin(imePrezime, ID, pasos, vozacka);
  215.             vlez.enqueue(covek);
  216.         }
  217.  
  218.         srediMVR(vlez);
  219.     }
  220. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement