Advertisement
user_M

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

Aug 19th, 2018
453
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Java 7.40 KB | None | 0 0
  1. Шалтерот на МВР Problem 3 (1 / 1)
  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. import java.util.NoSuchElementException;
  22. import java.util.Scanner;
  23. class SLLNode<E> {
  24.     protected E element;
  25.     protected SLLNode<E> succ;
  26.  
  27.     public SLLNode(E elem, SLLNode<E> succ) {
  28.         this.element = elem;
  29.         this.succ = succ;
  30.     }
  31.  
  32.     @Override
  33.     public String toString() {
  34.         return element.toString();
  35.     }
  36. }
  37. interface Queue<E> {
  38.  
  39.     // Elementi na redicata se objekti od proizvolen tip.
  40.  
  41.     // Metodi za pristap:
  42.  
  43.     public boolean isEmpty ();
  44.         // Vrakja true ako i samo ako redicata e prazena.
  45.  
  46.     public int size ();
  47.         // Ja vrakja dolzinata na redicata.
  48.  
  49.     public E peek ();
  50.         // Go vrakja elementot na vrvot t.e. pocetokot od redicata.
  51.  
  52.     // Metodi za transformacija:
  53.  
  54.     public void clear ();
  55.         // Ja prazni redicata.
  56.  
  57.     public void enqueue (E x);
  58.         // Go dodava x na kraj od redicata.
  59.  
  60.     public E dequeue ();
  61.         // Go otstranuva i vrakja pochetniot element na redicata.
  62.  
  63. }
  64. class LinkedQueue<E> implements Queue<E> {
  65.  
  66.     // Redicata e pretstavena na sledniot nacin:
  67.     // length go sodrzi brojot na elementi.
  68.     // Elementite se zachuvuvaat vo jazli dod SLL
  69.     // front i rear se linkovi do prviot i posledniot jazel soodvetno.
  70.     SLLNode<E> front, rear;
  71.     int length;
  72.  
  73.     // Konstruktor ...
  74.  
  75.     public LinkedQueue () {
  76.         clear();
  77.     }
  78.  
  79.     public boolean isEmpty () {
  80.         // Vrakja true ako i samo ako redicata e prazena.
  81.         return (length == 0);
  82.     }
  83.  
  84.     public int size () {
  85.         // Ja vrakja dolzinata na redicata.
  86.         return length;
  87.     }
  88.  
  89.     public E peek () {
  90.         // Go vrakja elementot na vrvot t.e. pocetokot od redicata.
  91.         if (front == null)
  92.             throw new NoSuchElementException();
  93.         return front.element;
  94.     }
  95.  
  96.     public void clear () {
  97.         // Ja prazni redicata.
  98.         front = rear = null;
  99.         length = 0;
  100.     }
  101.  
  102.     public void enqueue (E x) {
  103.         // Go dodava x na kraj od redicata.
  104.         SLLNode<E> latest = new SLLNode<E>(x, null);
  105.         if (rear != null) {
  106.             rear.succ = latest;
  107.             rear = latest;
  108.         } else
  109.             front = rear = latest;
  110.         length++;
  111.     }
  112.  
  113.     public E dequeue () {
  114.         // Go otstranuva i vrakja pochetniot element na redicata.
  115.         if (front != null) {
  116.             E frontmost = front.element;
  117.             front = front.succ;
  118.             if (front == null)  rear = null;
  119.             length--;
  120.             return frontmost;
  121.         } else
  122.             throw new NoSuchElementException();
  123.     }
  124.  
  125. }
  126.  
  127.  
  128. class Gragjanin {
  129.     String ime;
  130.     public int licnaKarta;
  131.     public int pasosh;
  132.     public int vozachkaDozvola;
  133.     public Gragjanin(String ime,int licnaKarta,int pasosh,int vozachkaDozvola) {
  134.         this.ime = ime;
  135.         this.licnaKarta = licnaKarta;
  136.         this.pasosh = pasosh;
  137.         this.vozachkaDozvola = vozachkaDozvola;
  138.     }
  139.     public String getIme() {
  140.         return ime;
  141.     }
  142.     public void setIme(String ime) {
  143.         this.ime = ime;
  144.     }
  145.     public int getLicnaKarta() {
  146.         return licnaKarta;
  147.     }
  148.     public void setLicnaKarta(int licnaKarta) {
  149.         this.licnaKarta = licnaKarta;
  150.     }
  151.     public int getPasosh() {
  152.         return pasosh;
  153.     }
  154.     public void setPasosh(int pasosh) {
  155.         this.pasosh = pasosh;
  156.     }
  157.     public int getVozachkaDozvola() {
  158.         return vozachkaDozvola;
  159.     }
  160.     public void setVozachkaDozvola(int vozachkaDozvola) {
  161.         this.vozachkaDozvola = vozachkaDozvola;
  162.     }
  163.     @Override
  164.     public String toString() {
  165.         return ime;
  166.     }
  167.    
  168. }
  169. public class ShalterotNaMVR {
  170.     public static void main(String[] args) {
  171.         Scanner scan = new Scanner(System.in);
  172.        
  173.         String brLuge = scan.nextLine();
  174.         int N = Integer.parseInt(brLuge);
  175.        
  176.         LinkedQueue<Gragjanin> Licna = new LinkedQueue<>();
  177.         LinkedQueue<Gragjanin> Pasos = new LinkedQueue<>();
  178.         LinkedQueue<Gragjanin> Vozachka = new LinkedQueue<>();
  179.        
  180.         for(int i=0;i<N;i++) {
  181.             String imePrez = scan.nextLine();
  182.             String licna = scan.nextLine();
  183.             int licnaK = Integer.parseInt(licna);
  184.             String pasos = scan.nextLine();
  185.             int pasosh = Integer.parseInt(pasos);
  186.             String vozacka = scan.nextLine();
  187.             int vozachka = Integer.parseInt(vozacka);
  188.            
  189.         Gragjanin g = new Gragjanin(imePrez, licnaK, pasosh, vozachka);
  190.        
  191.             if(g.getLicnaKarta() == 1) {
  192.                 Licna.enqueue(g);
  193.             }
  194.             else if(g.getPasosh() ==1) {
  195.                 Pasos.enqueue(g);
  196.             }
  197.             else  Vozachka.enqueue(g);
  198.         }
  199.        
  200.         while(!Licna.isEmpty()) {
  201.             Gragjanin pom = Licna.dequeue();
  202.             if(pom.getPasosh() == 1) {
  203.                 Pasos.enqueue(pom);
  204.             }
  205.             else if(pom.getVozachkaDozvola() == 1) {
  206.                 Vozachka.enqueue(pom);
  207.             }
  208.             else System.out.println(pom);
  209.         }
  210.        
  211.         while(!Pasos.isEmpty()) {
  212.             Gragjanin pom = Pasos.dequeue();
  213.             if(pom.getVozachkaDozvola() == 1) {
  214.                 Vozachka.enqueue(pom);
  215.             }
  216.             else System.out.println(pom);
  217.         }
  218.        
  219.         while(!Vozachka.isEmpty()) {
  220.             Gragjanin pom = Vozachka.dequeue();
  221.             System.out.println(pom);
  222.         }
  223.        
  224.     }
  225. }
  226.  
  227. Sample input
  228. 4
  229. Aleksandar Aleksandrovski
  230. 0
  231. 0
  232. 1
  233. Petre Petreski
  234. 1
  235. 0
  236. 0
  237. Branka Brankovska
  238. 0
  239. 0
  240. 1
  241. Jana Janevska
  242. 0
  243. 1
  244. 0
  245.  
  246. Sample output
  247. Petre Petreski
  248. Jana Janevska
  249. Aleksandar Aleksandrovski
  250. Branka Brankovska
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement