Bantu temanmu belajar dengan menambahkan soal di Kujawab. Klik disini..

Olimpiade Sains Nasional (OSN) 2014 - Komputer , Nomor 5

5

1s, 256MB

Hari ini Pak Dengklek ingin mengecat rumahnya dengan warna favorit bebek-bebeknya. Karena Pak Dengklek hanya memiliki kaleng-kaleng cat dengan warna dasar (merah, kuning, dan biru), maka Pak Dengklek menyiapkan sebuah ember dengan kapasitas maksimal 1.000 cc untuk mencampurkan ketiga warna dasar tersebut menjadi warna favorit bebek-bebeknya.

Pada suatu waktu, Pak Dengklek dapat menambahkan suatu warna dasar sebanyak sejumlah cc ke dalam embernya kemudian mencampurkannya. Perlu diperhatikan bahwa campuran warna tersebut tidak boleh melebihi kapasitas ember. Karena cat yang dipakai Pak Dengklek mudah mengering, maka Pak Dengklek hanya dapat melakukan proses menambahkan dan mencampurkan ini maksimal sebanyak 100 kali. Setelah melakukan proses menambahkan dan mencampurkan ini, campuran warna di ember akan dipakai untuk mengecat rumah.

Warna favorit bebek-bebek Pak Dengklek didapat dengan mencampurkan M cc warna Merah, K cc warna Kuning, dan B cc warna Biru dengan ketentuan M + K + B = 1.000. Perlu diperhatikan bahwa nilai M, K, dan B tidak dijamin berupa bilangan bulat.

Sayangnya, bebek-bebek Pak Dengklek tidak mengetahui nama dari warna favorit mereka sehingga mereka hanya dapat memberi tahu nilai kemiripan antara warna favorit mereka dengan warna yang berada pada ember Pak Dengklek. Nilai kemiripan tersebut dihitung dengan ketentuan berikut:

Dimisalkan campuran warna di ember Pak Dengklek saat ini yaitu X cc warna merah, Y cc warna Kuning, dan Z cc warna Biru.
Jarak warna antara warna di ember Pak Dengklek dengan warna favorit Bebek (W) dihitung dengan meminimalkan nilai (|kX - M| + |kY - K| + |kZ - B|) untuk suatu nilai riil k.
Sebagai catatan, pasti setidaknya ada satu dari ketiga nilai |kX - M|, |kY - K|, atau |kZ - B| yang sama dengan nol untuk mendapatkan nilai W.
Nilai kemiripan (F) dihitung dengan formula:


Sebagai contoh, apabila nilai M, K, dan B berturut-turut bernilai 200, 600, dan 200; serta nilai X, Y, dan Z berturut-turut bernilai 125, 200, dan 50; maka:

Untuk mendapatkan nilai W, perhatikan bahwa salah satu dari ketiga nilai  adalah 0.
Apabila nilai |kX - M| = 0, maka k = 1,6. Sehingga nilai  (|kX - M| + |kY - K| + |kZ - B|) = 400.
Apabila nilai |kY - K| = 0, maka k = 3. Sehingga nilai  (|kX - M| + |kY - K| + |kZ - B|) = 225.
Apabila nilai |kZ-B| = 0, maka k = 4. Sehingga nilai  (|kX - M| + |kY - K| + |kZ - B|) = 500.
Nilai W adalah nilai minimum dari ketiganya, sehingga W = 225.
Nilai F dihitung dengan formula F = 40.
Sehingga pada setiap Pak Dengklek melakukan proses menambahkan dan mencampurkan (yang telah dijelaskan pada paragraf 2), bebek-bebek Pak Dengklek akan memberi tahu nilai F kepada Pak Dengklek.

Bantulah Pak Dengklek untuk mengecat rumahnya dengan warna semirip mungkin dengan warna favorit bebek-bebeknya, yaitu mendapatkan nilai F sebesar mungkin!

Format Interaksi

Pada awalnya, program Anda akan menerima label kasus uji. Label kasus uji berisi sebuah string yang dijelaskan sebagai berikut:

Panjang string tersebut adalah banyaknya subsoal ditambah satu.
Digit pertama dari label adalah karakter ke-0, digit kedua dari label adalah karakter ke-1, dan seterusnya.
Karakter ke-0 akan berisi 0 jika kasus uji tersebut merupakan contoh kasus uji, atau berisi '.' jika bukan.
Untuk setiap nilai i di antara 1 hingga banyaknya subsoal, berlaku:
jika kasus uji tersebut memenuhi batasan subsoal ke-i, maka karakter ke-i berisi i, atau
jika kasus uji tersebut tidak memenuhi batasan subsoal ke-i, maka karakter ke-i berisi karakter '.'
Sebagai contoh apabila label sebuah kasus uji sebuah soal adalah 0..345, maka:

Soal tersebut memiliki 5 buah subsoal,
Kasus uji tersebut merupakan contoh kasus uji, dan
Kasus uji tesebut memenuhi batasan subsoal ke-3, ke-4, dan ke-5.
Selama interaksi berlangsung, program Anda diharuskan mencetak salah satu dari dua perintah: TAMBAH [WARNA] [TAKARAN] dan SELESAI.

Cetaklah TAMBAH [WARNA] [TAKARAN], jika Anda hendak menambahkan [TAKARAN] cc cat berwarna [WARNA] ke dalam ember. Volume cairan setelah ditambahkan tidak boleh melebihi kapasitas ember yakni 1.000 cc dan merupakan bilangan riil positif dengan 4 angka di belakang koma. Warna yang boleh ditambahkan hanyalah warna MERAH, KUNING, atau pun BIRU. Perhatikan bahwa perintah ini hanya dapat dipanggil maksimal 100 kali. Setelah mencetak perintah ini, program anda akan menerima input sebuah bilangan riil F persen dengan 4 angka di belakang koma sesuai dengan deskripsi soal.

Cetaklah SELESAI, jika Anda hendak menyelesaikan proses menambahkan dan mencampurkan. Campuran cat yang berada di dalam ember akan digunakan Pak Dengklek untuk mengecat rumahnya. Setelah mencetak perintah ini, interaksi akan selesai dan penilaian akan dilakukan.

Contoh Interaksi

 

Keluaran Program Peserta

(Pak Dengklek)

Umpan Balik Grader

(Bebek)

Informasi Tambahan
  0..3  
TAMBAH MERAH 100.0000    
  0.0000 W = 800.0000
TAMBAH KUNING 123.4500    
  11.8159 W = 486.0267
TAMBAH KUNING 76.5500    
  30.7180 W = 300.0000
TAMBAH BIRU 50.0000    
  51.0102 W = 150.0000
TAMBAH MERAH 25.0000    
  40.0000 W = 225.0000
SELESAI    
  (interaksi selesai)  
 

Penjelasan Contoh Interaksi

Pada kasus tersebut, nilai M, K, dan B berturut-turut bernilai 200, 600, dan 200.
Pada akhirnya, warna yang digunakan Pak Dengklek untuk mengecat rumahnya merupakan campuran dari :

X = 125 cc warna Merah,
Y = 200 cc warna Kuning, dan
Z = 50 cc warna Biru.
Nilai yang didapatkan peserta adalah nilai F terakhir yaitu 40.

Subsoal

Tidak ada subsoal pada soal ini. Poin total yang Anda peroleh adalah akumulasi nilai dari 100 buah kasus uji. Semua kasus uji akan termasuk di dalam setidaknya 1 dari 3 himpunan kasus uji berikut.

Himpunan Kasus Uji 1 (20 kasus uji)

  • M = K
  • Nilai M, K, dan B adalah sebuah bilangan bulat.

Himpunan Kasus Uji 2 (30 kasus uji)

  • B = 500
  • Nilai M, K, dan B tidak dipastikan sebuah bilangan bulat.

Himpunan Kasus Uji 3 (50 kasus uji)

  • Nilai M, K, dan B tidak dipastikan sebuah bilangan bulat.

Untuk membantu Anda memahami interaksi, disediakan game yang dapat diakses di sini. Kasus uji yang diberikan pada game ini hanyalah untuk visualisasi dan tidak termasuk dalam penilaian seperti pada game di soal interaktif sebelumnya.