Stack (tumpukan) adalah salah satu tipe data penting dalam dunia
pemrograman. Pak Dengklek meminta Anda untuk mensimulasikan N (1 ≤ N ≤
1000) buah operasi terhadap sebuah stack yang terdiri dari bilangan
bulat.
Mula-mula, stack yang Anda miliki adalah kosong (tidak berisi apa-apa). Lalu Anda perlu membaca perintah yang diberikan satu persatu dan mengaplikasikannya pada stack tersebut. Dua perintah dasar yang mungkin diberikan terhadap stack adalah "add X Y" atau "del Y". Perintah "add X Y" (atau biasa disebut push) berarti menambahkan Y buah bilangan bulat X pada ujung akhir stack. Sedangkan perintah "del Y" (atau biasa disebut pop) berarti menghapus Y buah bilangan bulat dari ujung akhir stack. Coba perhatikan bagaimana tipe data ini menyerupai tumpukan.
Yang unik dari stack Anda kali ini adalah bahwa ada dua buah perintah tambahan "adx X" dan "dex X". Perintah "adx X" berarti Anda perlu menambahkan X pada setiap bilangan bulat yang ada dalam stack, sedangkan perintah "dex X" berarti Anda perlu mengurangi X pada setiap bilangan bulat yang ada dalam stack.
Untuk menguji kebenaran dari operasi stack Anda, Anda perlu mencetak beberapa hal seperti berikut. Setiap kali melakukan perintah "del Y", Anda perlu mencetak satu bilangan bulat pertama yang Anda keluarkan. Setiap kali melakukan perintah "add X Y", Anda perlu mencetak banyaknya bilangan bulat yang ada dalam stack.
Mula-mula, stack yang Anda miliki adalah kosong (tidak berisi apa-apa). Lalu Anda perlu membaca perintah yang diberikan satu persatu dan mengaplikasikannya pada stack tersebut. Dua perintah dasar yang mungkin diberikan terhadap stack adalah "add X Y" atau "del Y". Perintah "add X Y" (atau biasa disebut push) berarti menambahkan Y buah bilangan bulat X pada ujung akhir stack. Sedangkan perintah "del Y" (atau biasa disebut pop) berarti menghapus Y buah bilangan bulat dari ujung akhir stack. Coba perhatikan bagaimana tipe data ini menyerupai tumpukan.
Yang unik dari stack Anda kali ini adalah bahwa ada dua buah perintah tambahan "adx X" dan "dex X". Perintah "adx X" berarti Anda perlu menambahkan X pada setiap bilangan bulat yang ada dalam stack, sedangkan perintah "dex X" berarti Anda perlu mengurangi X pada setiap bilangan bulat yang ada dalam stack.
Untuk menguji kebenaran dari operasi stack Anda, Anda perlu mencetak beberapa hal seperti berikut. Setiap kali melakukan perintah "del Y", Anda perlu mencetak satu bilangan bulat pertama yang Anda keluarkan. Setiap kali melakukan perintah "add X Y", Anda perlu mencetak banyaknya bilangan bulat yang ada dalam stack.
Format Masukan
Baris pertama berisi sebuah bilangan bulat N. N baris berikutnya masing-masing berisi sebuah perintahadd X Y
, del Y
, adx X
, atau dex X
sesuai penjelasan di atas. Nilai X dan Y berada di antara 1 sampai 10.000.Format Keluaran
Beberapa baris, sesuai dengan banyaknya perintah "add X Y" dan "del Y" yang diberikan pada masukan. Masing-masing baris berisi sebuah bilangan bulat sesuai penjelasan di atas.Contoh Masukan
8 add 1 1 add 2 2 add 3 3 del 2 adx 2 del 2 dex 1 del 2
Contoh Keluaran
1 3 6 3 5 3
Penjelasan
Berikut ini adalah visualisasi dari contoh masukan.awal : [] add 1 1 : [1] -> cetak 1 add 2 2 : [1 2 2] -> cetak 3 add 3 3 : [1 2 2 3 3 3] -> cetak 6 del 2 : [1 2 2 3] -> cetak 3 adx 2 : [3 4 4 5] del 2 : [3 4] -> cetak 5 dex 1 : [2 3] del 2 : [] -> cetak 3
0 komentar:
Posting Komentar