Latkoski

Танцов клуб

Jan 17th, 2016
52
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Java 6.65 KB | None | 0 0
  1. package tancovklub;
  2. import java.util.NoSuchElementException;
  3. import java.io.BufferedReader;
  4. import java.io.IOException;
  5. import java.io.InputStreamReader;
  6. import java.util.LinkedList;
  7. import java.util.List;
  8.  
  9. interface Queue<E> {
  10.  
  11.     // Elementi na redicata se objekti od proizvolen tip.
  12.  
  13.     // Metodi za pristap:
  14.  
  15.     public boolean isEmpty ();
  16.         // Vrakja true ako i samo ako redicata e prazena.
  17.  
  18.     public int size ();
  19.         // Ja vrakja dolzinata na redicata.
  20.  
  21.     public E peek ();
  22.         // Go vrakja elementot na vrvot t.e. pocetokot od redicata.
  23.  
  24.     // Metodi za transformacija:
  25.  
  26.     public void clear ();
  27.         // Ja prazni redicata.
  28.  
  29.     public void enqueue (E x);
  30.         // Go dodava x na kraj od redicata.
  31.  
  32.     public E dequeue ();
  33.         // Go otstranuva i vrakja pochetniot element na redicata.
  34.  
  35. };
  36.  
  37. interface Stack<E> {
  38.  
  39.     // Elementi na stekot se objekti od proizvolen tip.
  40.  
  41.     // Metodi za pristap:
  42.  
  43.     public boolean isEmpty ();
  44.         // Vrakja true ako i samo ako stekot e prazen.
  45.  
  46.     public E peek ();
  47.         // Go vrakja elementot na vrvot od stekot.
  48.  
  49.     // Metodi za transformacija:
  50.  
  51.     public void clear ();
  52.         // Go prazni stekot.
  53.  
  54.     public void push (E x);
  55.         // Go dodava x na vrvot na stekot.
  56.  
  57.     public E pop ();
  58.         // Go otstranuva i vrakja elementot shto e na vrvot na stekot.
  59. };
  60.  
  61. class ArrayQueue<E> implements Queue<E> {
  62.  
  63.     // Redicata e pretstavena na sledniot nacin:
  64.     // length go sodrzi brojot na elementi.
  65.     // Ako length > 0, togash elementite na redicata se zachuvani vo elems[front...rear-1]
  66.     // Ako rear > front, togash vo  elems[front...maxlength-1] i elems[0...rear-1]
  67.     E[] elems;
  68.     int length, front, rear;
  69.  
  70.     @SuppressWarnings("unchecked")
  71.     public ArrayQueue (int maxlength) {
  72.         elems = (E[]) new Object[maxlength];
  73.         clear();
  74.     }
  75.  
  76.     public boolean isEmpty () {
  77.         // Vrakja true ako i samo ako redicata e prazena.
  78.         return (length == 0);
  79.     }
  80.  
  81.     public int size () {
  82.         // Ja vrakja dolzinata na redicata.
  83.         return length;
  84.     }
  85.  
  86.     public E peek () {
  87.         // Go vrakja elementot na vrvot t.e. pocetokot od redicata.
  88.         if (length > 0)
  89.             return elems[front];
  90.         else
  91.             throw new NoSuchElementException();
  92.     }
  93.  
  94.     public void clear () {
  95.         // Ja prazni redicata.
  96.         length = 0;
  97.         front = rear = 0;  // arbitrary
  98.     }
  99.  
  100.     public void enqueue (E x) {
  101.         // Go dodava x na kraj od redicata.
  102.         elems[rear++] = x;
  103.         if (rear == elems.length)  rear = 0;
  104.         length++;
  105.     }
  106.  
  107.     public E dequeue () {
  108.         // Go otstranuva i vrakja pochetniot element na redicata.
  109.         if (length > 0) {
  110.             E frontmost = elems[front];
  111.             elems[front++] = null;
  112.             if (front == elems.length)  front = 0;
  113.             length--;
  114.             return frontmost;
  115.         } else
  116.             throw new NoSuchElementException();
  117.     }
  118. };
  119.  
  120. class ArrayStack<E> implements Stack<E> {
  121.  
  122.     // Stekot e pretstaven na sledniot nacin:
  123.     //depth e dlabochinata na stekot, a
  124.     // elems[0...depth-1] se negovite elementi.
  125.     private E[] elems;
  126.     private int depth;
  127.  
  128.     @SuppressWarnings("unchecked")
  129.     public ArrayStack (int maxDepth) {
  130.         // Konstrukcija na nov, prazen stek.
  131.         elems = (E[]) new Object[maxDepth];
  132.         depth = 0;
  133.     }
  134.  
  135.  
  136.     public boolean isEmpty () {
  137.         // Vrakja true ako i samo ako stekot e prazen.
  138.         return (depth == 0);
  139.     }
  140.  
  141.  
  142.     public E peek () {
  143.         // Go vrakja elementot na vrvot od stekot.
  144.         if (depth == 0)
  145.             throw new NoSuchElementException();
  146.         return elems[depth-1];
  147.     }
  148.  
  149.  
  150.     public void clear () {
  151.         // Go prazni stekot.
  152.         for (int i = 0; i < depth; i++)  elems[i] = null;
  153.         depth = 0;
  154.     }
  155.  
  156.  
  157.     public void push (E x) {
  158.         // Go dodava x na vrvot na stekot.
  159.         elems[depth++] = x;
  160.     }
  161.  
  162.  
  163.     public E pop () {
  164.         // Go otstranuva i vrakja elementot shto e na vrvot na stekot.
  165.         if (depth == 0)
  166.             throw new NoSuchElementException();
  167.         E topmost = elems[--depth];
  168.         elems[depth] = null;
  169.         return topmost;
  170.     }
  171. };
  172.  
  173.  
  174. public class TancovKlub {    
  175.  
  176.     public static void main (String[] args) throws IOException {
  177.         BufferedReader br = new BufferedReader(new InputStreamReader(System.in));  
  178.         ArrayStack<String>stack = new ArrayStack<String>(100);
  179.         String niza= br.readLine();
  180.         String[] podeleni = niza.split(" ");
  181.         for(int i = 0 ; i < podeleni.length; i++)
  182.         {
  183.             if(podeleni[i].equals("LM"))
  184.             {
  185.                 stack.push(podeleni[i]);
  186.                 for(int j = i ; j < podeleni.length;j++)
  187.                 {
  188.                     if(podeleni[j].equals("LZ"))
  189.                     {
  190.                         if(stack.isEmpty()==false)
  191.                             stack.pop();
  192.                         podeleni[j] = "";
  193.                     }
  194.                 }
  195.             }
  196.             if(podeleni[i].equals("LZ"))
  197.             {
  198.                
  199.                 stack.push(podeleni[i]);
  200.                 for(int j = i ; j < podeleni.length;j++)
  201.                 {
  202.                     if(podeleni[j].equals("LM"))
  203.                     {
  204.                         if(stack.isEmpty()==false)
  205.                             stack.pop();
  206.                         podeleni[j] = "";
  207.                     }
  208.                 }
  209.             }
  210.             if(podeleni[i].equals("SM"))
  211.             {
  212.                
  213.                 stack.push(podeleni[i]);
  214.                 for(int j = i ; j < podeleni.length;j++)
  215.                 {
  216.                     if(podeleni[j].equals("SZ"))
  217.                     {
  218.                         if(stack.isEmpty()==false)
  219.                             stack.pop();
  220.                         podeleni[j] = "";
  221.                     }
  222.                 }
  223.             }
  224.             if(podeleni[i].equals("SZ"))
  225.             {
  226.                 stack.push(podeleni[i]);
  227.                 for(int j = i ; j < podeleni.length;j++)
  228.                 {
  229.                     if(podeleni[j].equals("SM"))
  230.                     {
  231.                         if(stack.isEmpty()==false)
  232.                             stack.pop();
  233.                         podeleni[j] = "";
  234.                     }
  235.                 }
  236.             }
  237.             if(podeleni[i].equals("OM"))
  238.             {
  239.                 stack.push(podeleni[i]);
  240.                 for(int j = i ; j < podeleni.length;j++)
  241.                 {
  242.                     if(podeleni[j].equals("OZ"))
  243.                     {
  244.                         if(stack.isEmpty()==false)
  245.                             stack.pop();
  246.                         podeleni[j] = "";
  247.                     }
  248.                 }
  249.             }
  250.             if(podeleni[i].equals("OZ"))
  251.             {
  252.                 stack.push(podeleni[i]);
  253.                 for(int j = i ; j < podeleni.length;j++)
  254.                 {
  255.                     if(podeleni[j].equals("OM"))
  256.                     {
  257.                         if(stack.isEmpty()==false)
  258.                             stack.pop();
  259.                         podeleni[j] = "";
  260.                     }
  261.                 }
  262.             }
  263.             else i++;
  264.         }  
  265.         int brojac = 0;
  266.         while(stack.isEmpty()==false)
  267.         {
  268.             brojac++;
  269.             String tmp = stack.pop();
  270.             if(tmp.equals("SM"))
  271.                 System.out.print("SZ ");
  272.             else if(tmp.equals("SZ"))
  273.                 System.out.print("SM ");
  274.             else if(tmp.equals("LM"))
  275.                 System.out.print("LZ ");
  276.             else if(tmp.equals("LZ"))
  277.                 System.out.print("LM ");
  278.             else if(tmp.equals("OM"))
  279.                 System.out.print("OZ ");
  280.             else if(tmp.equals("OZ"))
  281.                 System.out.print("OM ");
  282.         }
  283.         System.out.println(brojac);
  284.        
  285.        
  286.     }
  287. }
Add Comment
Please, Sign In to add comment