Suatu sekolah di Kebumen mengadakan lomba coding se-kabupaten Kebumen. Lomba tersebut diikuti oleh seluruh sekolah menengah atas yang ada di Kebumen. Masing-masing sekolah mengirimkan perwakilannya paling banyak 4 siswa. Lomba ini berlangsung selama 3 hari berturut-turut dan menuntut pesertanya untuk menginap di asrama yang sudah di sediakan. Untuk berangkat menuju tempat pertandingan, panitia menyediakan taksi untuk semua peserta. Setiap taksi dapat menampung paling banyak 4 penumpang. Tentukan berapa taksi minimum yang dibutuhkan untuk mengangkut semua siswa jika setiap siswa dari sekolah yang sama harus berada di satu taksi yang sama (tidak menutup kemungkinan satu taksi berisi lebih dari satu sekolah yang berbeda)! Input Baris pertama berisi integer n (1<=n<=10^5) yaitu jumlah sekolah yang berpartisipasi. Baris kedua berisi s1, s2, ..., sn (1<=si<=4) yaitu banyaknya siswa yang mewakili tiap sekolah. Output Print satu angka yaitu angka taksi minimum yang dibutuhkan. Contoh: Input 5 1 2 4 3 3 Output 4 Input 8 2 3 4 4 2 1 3 1 Output 5 nb: mari kita bertukar source code :D
1 jempol
zegova
192
16
penanya
·
11 tahun, 4 bulan yang lalu
·
2 jempol
Ini share dari saya, setelah di coba di compile di web ini ternyata banyak yang di restrict sehingga ga bisa jalan. Silakan di jalanin di php compiler masing2 ya buat di coba :D <?php function solve(){ $line0 = trim(fgets(STDIN)); $n = $line0; $line1 = trim(fgets(STDIN)); $data = explode(" ", $line1); $isi = array(); for ($i = 0; $i<$n; $i++){ $c = $data[$i]; if ($c === 4){ $isi[3]++; } else { $temp=$c-1; $isi[$temp]++; } } $isi[0] -= $isi[2]; if ($isi[0] < 0) { $isi[0] = 0; } $isi[3] += $isi[2]; $isi[0] += $isi[1]*2; $isi[0] = ceil($isi[0]/4); echo $isi[0]+$isi[3]; } function run(){ solve(); } run(); ?>
dwhite
198
49
·
11 tahun, 4 bulan yang lalu
·
1 jempol
wah mantap gan, ini versi saya gan, sederhana memang tapi mudah-mudahan menjawab dari soal yang agan berikan... :D <?php function peserta($sekolah){ echo "Jumlah sekolah : ".$sekolah."<br>"; echo "Siswa Per Sekolah: "; for($i=0;$i<$sekolah;$i++){ $b = rand(1,4); echo $b." "; $jumlah = $jumlah + $b; } echo "<br>Total Siswa : ".$jumlah; return taxi($jumlah); } function taxi($jumlah){ $jTaxi = $jumlah/4; return $jTaxi; } echo "<br>Jumlah Taxi Minimum : ".ceil(peserta(5)); ?>
dwhite
198
49
·
11 tahun, 4 bulan yang lalu
·
0 jempol
wah mantap gan, ini versi saya gan, sederhana memang tapi mudah-mudahan menjawab dari soal yang agan berikan... :D <?php function peserta($sekolah){ echo "Jumlah sekolah : ".$sekolah."<br>"; echo "Siswa Per Sekolah: "; //Random Siswa untuk masing-masing sekolah dengan batas maksimum 4siswa per sekolah for($i=1;$i<=$sekolah;$i++){ //random minimum 1 maximum 4 $b = rand(1,4); //cetak jumlah siswa echo $b." "; //jumlahkan seluruh siswa yang mengikuti kegiatan tersebut $jumlah = $jumlah + $b; } //cetak total siswa/ echo "<br>Total Siswa : ".$jumlah; //panggil fungsi untuk menghitung jumlah minimum taxi yang digunakan return taxi($jumlah); } function taxi($jumlah){ //hitung jumlah taxi minimum dengan membagi jumlah siswa dibagi 4 return $jumlah/4; } //Isi Jumlah Sekolah echo "<br>Jumlah Taxi Minimum : ".ceil(peserta(5)); ?> *edited dari postingan diatas, ditambah komentar biar yang lain ikutan belajar ;) mas ganis, kalo bisa tambahin fungsi edit di postingan yang kita buat, takut-takut ada salah-salah pas posting... :)
zegova
192
16
penanya
·
11 tahun, 4 bulan yang lalu
·
0 jempol
Solusinya menarik, tapi setelah dicoba ada beberapa hasil yang tidak sesuai, misal Input 3 3 3 2 Output 2 seharusnya 3 Yang perlu diperhatikan adalah setiap siswa yang dari sekolah yang sama harus ada di satu taksi yang sama, tidak boleh misah. Kalo kasus diatas, berarti 2 siswa dari sekolah yang sama harus pisah, sehingga menghasilkan jawaban yang salah. Kalo menurut saya begitu kaka. CMIIW
ganis
198
841
·
11 tahun, 4 bulan yang lalu
·
0 jempol
wah keren2,, terimakasih mas zegova! Hm, sepertinya sudah pada tidak sabar mengunggu materi "Penyelesaian Masalah/Logika" ya? hahaha
Uko_Corleone
300
11
·
11 tahun, 4 bulan yang lalu
·
0 jempol
iya mas ganis, saya juga gak sabar nunggu, coding itu seru bagi saya :D
dwhite
198
49
·
11 tahun, 4 bulan yang lalu
·
0 jempol
wah iya ya gan, saya ga baca bagian itu gan, hmmm, ijin ambil potongan codenya ya gan zegova, belum menemukan alternatif code lagi gan, :( <?php function peserta($sekolah){ echo "Jumlah sekolah : ".$sekolah."<br>"; echo "Siswa Per Sekolah: "; //Random Siswa untuk masing-masing sekolah dengan batas maksimum 4siswa per sekolah $taxi = array(); for($i=1;$i<=$sekolah;$i++){ //random minimum 1 maximum 4 $b = rand(1,4); //cetak jumlah siswa echo $b." "; //jumlahkan seluruh siswa yang mengikuti kegiatan tersebut $jumlah = $jumlah + $b; //Cek Jumlah siswa per sekolah if ($b === 4){ $taxi[3]++; } else { $temp=$b-1; $taxi[$temp]++; } } /*------------------------------------------* * This Code inspired by : zegova * * cek siswa dan hitung jumlah taxi Minimum * *-------------------------------------------*/ $taxi[0] -= $taxi[2]; if ($taxi[0] < 0) { $taxi[0] = 0; } $taxi[3] += $taxi[2]; $taxi[0] += $taxi[1]*2; $taxi[0] = ceil($taxi[0]/4); //cetak totl siswa/ echo "<br>Total Siswa : ".$jumlah; //panggil fungsi untuk menghitung jumlah minimum taxi yang digunakan return $taxi[0]+$taxi[3]; } //taxi Jumlah Sekolah echo "<br>Jumlah Taxi Minimum : ".peserta(5); ?>