Ahli110 XPUnit 11: Struktur Data, soal 10 dari 10

Antrean IGD

Layani pasien IGD berdasarkan tingkat kegawatan, bukan urutan datang.

Di instalasi gawat darurat, pasien tidak dilayani sesuai urutan datang. Pasien paling gawat diperiksa lebih dulu. Bila tingkat kegawatannya sama, yang datang lebih dulu didahulukan.

Masukan

Baris pertama berisi Q (1 sampai 20000). Q baris berikutnya berisi perintah:

  • DATANG nama t berarti pasien nama datang dengan tingkat kegawatan t dari 1 sampai 5, makin besar makin gawat
  • PERIKSA berarti dokter siap memeriksa satu pasien

Keluaran

Untuk setiap PERIKSA, cetak nama pasien yang diperiksa, atau Tidak ada pasien bila ruang tunggu kosong.

Contoh masukan dan keluaran

  1. Contoh 1

    Masukan

    6
    DATANG Andi 2
    DATANG Bela 5
    DATANG Cahyo 2
    PERIKSA
    PERIKSA
    PERIKSA

    Keluaran

    Bela
    Andi
    Cahyo

Petunjuk

Coba kerjakan dulu. Buka petunjuk satu per satu kalau kamu buntu.

Petunjuk 1

Mencari pasien paling gawat dengan menelusuri semua yang menunggu bisa terlalu lambat untuk 20000 perintah.

Petunjuk 2

Pakai heap (antrean prioritas). Di Python, heapq menyimpan nilai terkecil di puncak, jadi simpan (-tingkat, nomor_datang, nama) supaya yang paling gawat dan paling awal datang berada di puncak.

Pelajari dulu konsepnyaHeap dan priority queueStruktur Data

Soal lain di unit Struktur Data

Latih logika sedikit setiap hari

Ada soal harian dengan XP ganda dan liga mingguan yang dimulai dari nol setiap Senin.

Lihat semua tantangan