Advertisement
dzocesrce

[APS] Exam Session

Aug 29th, 2023
502
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Java 3.98 KB | None | 0 0
  1. /*
  2. Za povisoka ocenka vo juni 2022, pa juni 2023, i povtorno vo juni 2024???
  3.  
  4. При учење за испити, Dzocesrce има навика да ги чува сите книги на еден куп, една врз друга. При пребарување на дадена книга која му е потребна, тој секогаш ги трга прво најгорните, една по една, се додека не ја земе книгата која му треба. Штом ќе ја извади таа книга, останатите кои биле над неа ги враќа во истиот редослед назад. Откако ќе го научи дадениот предмет, ја враќа книгата на врвот на купот.
  5.  
  6. Дадена е иницијалната поставеност на книгите на купот на Dzocesrce (во редослед одоздола нагоре). Дадени се и испитите по распоред на полагање. Ваша задача е да одредите колку пати секоја од книгите ќе биде извадена и ставена назад на купот.
  7.  
  8. Влез:
  9.  
  10. Во првата линија од влезот се дадени два броја: М, број на книги и N, број на испити.
  11.  
  12. Во втората линија од влезот се дадени имињата на книгите, подредени одоздола нагоре.
  13.  
  14. Во третата линија од влезот се дадени испитите кои се полагаат по редослед.
  15.  
  16. Излез:
  17. За секоја книга да се испечати колку пати ќе биде земена и вратена назад на купот (еден „настан“ на земање-враќање на книгата се брои еднаш, не два пати). Имињата на книгите се печатат во исти редослед во кој биле дадени на влезот.
  18. */
  19. import java.util.*;
  20. public class ExamSession {
  21.     public static int getBookID(String[] books, String exam){
  22.         for(int i=0;i<books.length;i++){
  23.             if(books[i].equals(exam)) return i;
  24.         }
  25.         return -1;
  26.     }
  27.     public static void main(String[] args) {
  28.         Scanner input= new Scanner(System.in);
  29.         String[] num= input.nextLine().split("\\s+");
  30.         int numBooks= Integer.parseInt(num[0]);
  31.         int numExams= Integer.parseInt(num[1]);
  32.         Stack<Integer> s= new Stack<>();
  33.         String[] books= input.nextLine().split("\\s+");
  34.         Integer[] books_id= new Integer[numBooks];
  35.         for(int i=0;i<numBooks;i++) books_id[i]=0;
  36.         for(int i=0;i<numBooks;i++){
  37.             s.push(i);
  38.         }
  39.         Stack<Integer> temp= new Stack<>();
  40.         if(numExams!=0){
  41.             String[] exams= input.nextLine().split("\\s+");
  42.             for(int i=0;i<numExams;i++){
  43.                 int top;
  44.                 int exam= getBookID(books,exams[i]);
  45.                 while(true){
  46.                     if(s.peek()==exam){
  47.                         books_id[s.peek()]++;
  48.                         top= s.pop();
  49.                         break;
  50.                     }
  51.                     books_id[s.peek()]++;
  52.                     temp.push(s.pop());
  53.                 }
  54.                 while(!temp.isEmpty()) s.push(temp.pop());
  55.                 s.push(top);
  56.             }
  57.         }
  58.         for(int i=0;i<numBooks;i++){
  59.             System.out.println(books[i]+" "+books_id[i]);
  60.         }
  61.     }
  62. }
  63. /*
  64. 7 3
  65. APS OS Mrezhi AOK Objektno Strukturno Kalkulus
  66. APS Objektno Mrezhi
  67. -------------------
  68. APS 3
  69. OS 1
  70. Mrezhi 2
  71. AOK 2
  72. Objektno 3
  73. Strukturno 3
  74. Kalkulus 3
  75.  
  76. 8 0
  77. APS OS Mrezhi AOK Objektno Strukturno AnaKarenina Kalkulus
  78. ----------------------------------------------------------
  79. APS 0
  80. OS 0
  81. Мrezhi 0
  82. AOK 0
  83. Objektno 0
  84. Strukturno 0
  85. AnaKarenina 0
  86. Kalkulus 0
  87. */
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement