









Dear Kanjeng Pembaca sekalian,… soal ini banyak tantangan dari 200-an siswa agak sulit menyelesaikannya… so kita coba bahas tentang soal ini …!!! Jika kita baca terlihat sebenernya soal ini hanya permainan AND, OR dan XOR ..!!! Lha wong kalau nanti suatu angka mau dibandingkan dengan angka lain… misalnya menggunakan AND… tinggal pake operator & … mau OR tinggal pake operator | … mau XOR tinggal menggunakan operator ^ ….!!! Terlihat gak sulit … ya thooo …???
Namun pada hal ke-2 … ketika dibaca mulai … ada semacam ‘jebakan betmen’ … dimana array yang diminta… harus bisa mencapai 2 x 10^5 … artinya harus sanggup mengolah atau memproses 200 ribu array …!!! What’s… boro-boro 200 ribu… 10 ribu langsung maceeet itu program …. kalau bener lhooo… mau ditest nya seperti itu …!!! Jadi pada posisi ini, jika tidak pesan menggunakan statement malloc() harusnya sudah salaaah… kembali ini kalau mau konsisten… lha wong soalnya mau minta bisa 200 ribu array … betul …???
Naaagh di hal 3 … jadi kunci pertama adalah input baris pertama… jadi kalau bisa sampai 200 ribu… program ok …!!! Namun by default pasti gak bisa … karena ada limitasi dari default memory yang dialokasikan ke program …!!! Berikutnya adalah penafisran tentang input dan outputnya… jadi sebagaimana terlihat dibawah… jadi semuanya diinput dulu dari 5, kemudian terus sampai baris terakhir yaitu angka 2 … kemudian output brojol …!!! Penafsiran ini penting … karena kalau melihat inputnya… itu input ‘one shot’ dalam artian sekaligus diinput… kalau ada yang menafsirkan… gak gitu mas… setiap angka 2 brojol itu output… naaagh itu harus di screen shoot… dan ditampilkan di soal … !!!
Mengapa soal input dan output ini penting …??? Karena dalam di IT itu ada input and output analysis… kalau gak jelas format nya seperti apa bisa bermacam-macam penafsiran… dan itu sah-sah saja… !!! Naaagh anggap laaagh dalam case ini semuanya brojol sekaligus …!!! Naaagh gimana programnya …???
Sebagaimaan terlihat… ketika dimasukkan nilai n,… langsung variable a itu akan terbentuk array sebanyak n x besarnya byte utk unsigned long …!!! Jadi sudah cukup laaagh untuk bikin array, jadi n mau dimasukin 200000 yaaagh langsung akan dialokasikan memory untuk ini …!!! Jadi sudah gak lagi bikin misalnya int a[1000] … ini sudah main memory yang besar …!!! Demikian juga variable b … juga dipesan array memory… lho buat apa a dan b ini …??? a itu adalah bilangan pada aray awal atau gampangnya variable 1 …. kemudian b adalah variabel hasil tampungan dari perbandingan nilai_banding vs variable 1 … dengan operator AND, OR, atau XOR … dan juga ditahap awal sudah menyimpan data-data dari variabel array a… !!! Sampai disini paham …???
Naaagh terus c buat apaan …??? Hasil output final dari operasi AND, OR atau XOR ditampung di variable c … dan karena c adalah 2 dimensi array… maka bikin nya malloc juga 2 kali… dimana q itu adalah baris… dan n itu adalah kolom … jadi langsung pesan juga memory dengan malloc …!!! Berikutnya adalah memproses, jika ada kode 1 diikuti dengan kata AND, OR atau XOR … !!! Jika ada perintah misalnya 2 … maka hasil dari array b, akan disimpan di array multidimensi c yang akan brojol berbarengan …!!!
Naaagh setiap kali dimasukkan input 2 … langsung insert di array variable c dari hasil pengolahan di array variable b … !!! Jika input sudah selesai semua,.. tinggal cetak variable array c… so akan keluar baris dan colom sesuai output yang diminta… !!! Kembali ini penafsiran ketika melihat outputnya ingin brojol sekaligus … maka variabel array c harus 2 dimensi… tapi kalau setiap 2 brojol outputnya alias model cicil… yaaagh gak perlu array 2 dimensi …!!! Naaagh bagaimana hasilnya …???
So, kalau begini mestinya jelas lhooo… bahwa program nya berjalan dengan baik … lha wong sudah sama kok… !!! Monggo mawon kalau mau tambah validasi misalnya maksimum n harus sekian… namun pengalaman yang sudah-sudah dipasang validasi malah salah… gak dipasang malah beneer… jadi memang upaya nebak engine server judge ini rodo runyaaam …!!!
Ogh… jangan lupa melakukan statement free()… kalau untuk 1 dimensi lebih gampang, namun kalau 2 dimensi agak butuh looping … free ini untuk membebaskan memory supaya gak dipakai … atau dipegang oleh program yang kita buat …!!! Demikian pembahasannya… jika ada pertanyaan atau komentar silahkan tulis di kolom dibawah… !!! Ciaooo 😀
Leave a Reply