Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- import java.util.Arrays;
- import java.util.Scanner;
- import java.util.stream.IntStream;
- class ArrayQueue<E> {
- E[] elems;
- int length, front, rear;
- @SuppressWarnings("unchecked")
- public ArrayQueue(int maxlength) {
- elems = (E[]) new Object[maxlength];
- clear();
- }
- public boolean isEmpty() {
- return (length == 0);
- }
- public int size() {
- return length;
- }
- public E peek() {
- if (length > 0)
- return elems[front];
- else {
- System.out.println("Queue is empty");
- return null;
- }
- }
- public void clear() {
- length = 0;
- front = rear = 0;
- }
- public void enqueue(E x) {
- elems[rear++] = x;
- if (rear == elems.length) rear = 0;
- length++;
- }
- public E dequeue() {
- if (length > 0) {
- E frontmost = elems[front];
- elems[front++] = null;
- if (front == elems.length) front = 0;
- length--;
- return frontmost;
- } else {
- System.out.println("Queue is empty");
- return null;
- }
- }
- @Override
- public String toString() {
- StringBuffer sb = new StringBuffer();
- IntStream.range(0, size()).forEach(i -> sb.append(elems[i]));
- sb.setLength(sb.length() - 1);
- return sb.toString();
- }
- }
- class Citizen {
- String imePrezime;
- int lKarta, pasos, vozacka;
- public Citizen(String imePrezime, int lKarta, int pasos, int vozacka) {
- super();
- this.imePrezime = imePrezime;
- this.lKarta = lKarta;
- this.pasos = pasos;
- this.vozacka = vozacka;
- }
- @Override
- public String toString() {
- return imePrezime + "\n";
- }
- }
- public class MVR {
- /* ID then Passport then Driving license */
- /* Each of them has its own queue */
- /* if multiple documents, apply first for ID, then passport than driving */
- public static void otvoriShalter(ArrayQueue<Citizen> redicaLkarti, ArrayQueue<Citizen> redicaPasos, ArrayQueue<Citizen> redicaVozacka) {
- while (!redicaLkarti.isEmpty()){
- Citizen temp = redicaLkarti.dequeue();
- if (temp.pasos == 0 && temp.vozacka == 0){
- System.out.print(temp);
- } else if(temp.pasos == 1) {
- redicaPasos.enqueue(temp);
- } else {
- redicaVozacka.enqueue(temp);
- }
- }
- while (!redicaPasos.isEmpty()){
- Citizen temp = redicaPasos.dequeue();
- if (temp.vozacka == 0){
- System.out.print(temp);
- } else {
- redicaVozacka.enqueue(temp);
- }
- }
- while (!redicaVozacka.isEmpty()){
- System.out.print(redicaVozacka.dequeue());
- }
- }
- public static void main(String[] args) {
- Scanner br = new Scanner(System.in);
- ArrayQueue<Citizen> redicaLkarti = new ArrayQueue<Citizen>(10);
- ArrayQueue<Citizen> redicaPasos = new ArrayQueue<Citizen>(10);
- ArrayQueue<Citizen> redicaVozacka = new ArrayQueue<Citizen>(10);
- int N = Integer.parseInt(br.nextLine());
- 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());
- Citizen covek = new Citizen(imePrezime, lKarta, pasos, vozacka);
- if (lKarta == 1) {
- redicaLkarti.enqueue(covek);
- } else if (pasos == 1)
- redicaPasos.enqueue(covek);
- else
- redicaVozacka.enqueue(covek);
- }
- otvoriShalter(redicaLkarti, redicaPasos, redicaVozacka);
- }
- }
Advertisement
Add Comment
Please, Sign In to add comment