Sunday, 10 May 2015

Soal Programming GEMASTIK 7 UGM 2014

Carl 

Time limit 3 detik 
"All can be known, and known by me." 
Carl adalah seorang penyihir. Dia memiliki banyak mantra. Sebagai seorang penyihir yang hebat, dia pun memiliki cara khusus untuk mengingat serta mengaktifkan mantra yang dia miliki. Untuk mengaktifkan mantra, Carl menggunakan aura. Dia memiliki N jenis aura dan dia dapat mengaktifkan K aura sekaligus. Untuk mengaktifkan mantra yang spesifik, berikut hal yang harus dilakukan Carl: Carl harus mengaktifkan tepat K aura. Aura yang aktif boleh sama (mengaktifkan aura yang sama akan memperkuat aura tersebut) Setelah kedua kondisi diatas dipenuhi, barulah Carl bisa mengaktifkan mantra. Carl penasaran, berapa banyak mantra yang dia kuasai (dia terlalu hebat dan terlalu tidak peduli dengan jumlah mantra yang dia kuasai). Bantulah dia! (Baca penjelasan dari contoh untuk lebih jelas) 

Input
 Baris pertama terdapat sebuah bilangan bulat T (1 <= T <= 50) yang menyatakan jumlah kasus. T baris selanjutnya masing-masing berisi dua buah bilangan N dan K (1 <= N, K <= 1 000 000). 

Output 
Untuk setiap kasus outputkan pada satu baris sebuah bilangan bulat yang menyatakan jumlah mantra yang dimiliki Carl modulo 1 000 000 007. 

Contoh Input 
3 3 
2 3 

Contoh Output 
10 4 

Penjelasan Pada kasus pertama, 
ada tiga aura dan Carl dapat mengaktifkan tiga aura sekaligus. Anggaplah ketiga aura tersebut diberi nama Quas(Q), Wex(W), dan Exort(E). Berikut mantra-mantra yang Carl miliki: 
QQQ - Cold Snap 
QQW - Ghost Walk 
QQE - Ice wall 
WWQ - Tornado 
QWE - Deafening Blast 
EEQ - Forged Spirit 
WWW - EMP 
WWE - Alacrity 
EEW - Chaos Meteor 
EEE - Sun Strike 
Total ada 10 mantra. Perlu diingat bahwa Carl dapat mengaktifkan aura yang sama (seperti pada mantra Cold Snap, dimana dia mengaktifkan tiga aura Quas). Pada kasus kedua, anggaplah aura yang dimiliki Carl adalah Quas(Q) dan Wex(W). Mantra yang dimilikinya adalah: QQQ - Cold Snap QQW - Ghost Walk WWQ - Tornado WWW - EMP 




Monumen 

Time limit 3 detik 
Budi ingin membangun sebuah monumen pada lahan berukuran N x M (3 <= N, M <= 500) petak bujur sangkar. Monumen yang akan dibangun mempunyai alas berbentuk bujur sangkar yang diputar 45 derajat dan monumen menempati sebuah petak yang terletak di tengah-tengah alas. Perlu diketahui bahwa luas alas harus lebih besar dari luas monumen. Dalam membangun monumen, Budi sangat rewel dengan tingkat keindahan monumen. Setiap petak mempunyai tingkat keindahan P (-1000 <= P <= 1000) yang berbeda. Tingkat keindahan monumen dihitung dari total tingkat keindahan area yang dilingkupi alas monumen termasuk monumen itu sendiri. Bantulah Budi untuk membangun monumen yang paling indah. Karena ini adalah proyek milik pemerintah maka Budi tidak boleh untuk tidak membangun monumen tersebut. 

Input 
Baris pertama berisi sebuah bilangan bulat T (1 <= T <= 100) yang menyatakan jumlah kasus. Setiap kasus terdiri dari dua baris, baris pertama berisi dua buah bilangan bulat N dan M yang menyatakan ukuran petak. N baris berikutnya masing-masing berisi M buah bilangan bulat dipisahkan spasi yang menyatakan tingkat keindahan pada setiap petak. 

Output 
Untuk setiap kasus, output terdiri atas sebuah baris yang berisi sebuah bilangan bulat yang menyatakan tingkat keindahan monumen terbesar yang bisa dibangun oleh Budi. 

Contoh Input 
3 3 
1 1 1 
1 1 1 
1 1 1 

Contoh Output 



Lotek 

Time limit 1 detik 
 Saya dan adik saya sering makan lotek (lotek adalah makanan mirip gado-gado yang banyak ditemui di Yogyakarta). Saya selalu makan dengan porsi normal, sedang adik saya tidak selalu makan dengan porsi normal. Terkadang dia makan dengan porsi yang lebih besar, tapi pernah juga dia makan dengan porsi yang lebih kecil. Suatu ketika, kami berdua makan di warung lotek di dekat tempat tinggal kami. Seperti biasa, saya makan dengan porsi standar dengan harga X. Adik saya memesan dengan porsi yang berbeda. Dia berkata kepada penjualnya,"Buatkan saya lotek dengan harga Y". Karena penjualnya merupakan orang yang adil, dia membuatkan lotek untuk adik saya sesuai dengan harga yang diberikan olehnya. Saya pun penasaran, berapa perbandingan porsi adik saya pesan dengan porsi yang saya pesan? Bantulah saya menghitungnya. 

Input 
Pada baris pertama, diberikan sebuah bilangan bulat positif N (1 <= N <= 100), yang menandakan berapa kali kami berdua makan di warung lotek. N baris berikutnya, diberikan dua buah bilangan bulat positif X dan Y (1 <= X, Y <= 100 000), yang menunjukkan harga porsi lotek yang saya pesan dan yang adik saya pesan pada kunjungan ke-i kami ke warung lotek. 

Output 
Keluarkan N buah baris, dimana baris ke-i adalah porsi lotek yang adik saya pesan pada kunjungan ke-i. Perlu diingat bahwa penulisan jawabannya haruslah dalam bentuk "A/B", dimana B tidak membagi habis A. 

Contoh Input 
6000 8000 
6500 8000 

Contoh Output 
4/3 
16/13 



Lapisan 

Time limit 2 detik 
Catur adalah seorang peneliti gempa bumi. Pada suatu hari Catur mencoba membuat simulasi gempa bumi pada lapisan-lapisan yang terdapat di dalam tanah. Setiap batas-batas antar lapisan di dalam tanah dimodelkan sebagai sekumpulan titik pada koordinat dua dimensi di mana setiap titik yang berurutan dihubungkan dengan garis. Setiap lapisan mempunyai sebuah koefisien V yang mempengaruhi rambatan gelombang pada lapisan tersebut. Ilustrasi lapisan pada contoh input. Garis vertikal di kiri dan kanan gambar hanya sebagai penegas batas kiri dan kanan Setelah model lapisan disiapkan, Catur lalu menempatkan sejumlah titik secara sembarang pada model lapisan tersebut sebagai sensor yang dapat membuat atau menerima gelombang. Beberapa saat kemudian Catur menyadari bahwa titik-titik yang ditempatkan tadi jumlahnya terlalu banyak dan Catur lupa mencatat lapisan tempat titik-titik itu berada sebelum memulai langkah selanjutnya. 

Input 
Baris pertama terdapat sebuah bilangan bulat N (1 <= N <= 100) yang menyatakan jumlah lapisan. Kemudian baris-baris selanjutnya terdapat deskripsi dari N+1 batas lapisan terurut dari atas ke bawah (koordinat y awal terkecil sampai terbesar). Setiap batas lapisan diawali sebuah bilangan bulat pada satu baris Li (2 <= Li <= 20000) yang menyatakan jumlah titik yang menyusun batas lapisan tersebut. Li baris berikutnya masing-masing terdapat dua buah bilangan bulat X dan Y (-10000 <= X, Y <= 10000) yang menyatakan titik-titik penyusun batas lapisan. Titik-titik tersebut terurut dari kiri ke kanan (X(j) < X(j+1)). Dijamin tidak ada dua batas lapisan yang saling bersinggungan serta semua batas lapisan mempunyai koordinat X awal dan akhir yang sama. Setelah deskripsi batas lapisan, terdapat sebuah bilangan M (1 <= M <= 10000) pada satu baris yang menyatakan jumlah titik sensor yang ditempatkan. M baris berikutnya masing-masing terdapat dua buah bilangan Sx dan Sy (-10000 <= Sx, Sy <= 10000) yang menyatakan koordinat titik sensor yang ditempatkan. Dijamin titik sensor terletak pada suatu lapisan. 

Output 
Untuk setiap titik sensor outputkan pada satu baris sebuah bilangan bulat yang menyatakan nomor lapisan tempat titik sensor tersebut berada. Lapisan dinomori 1 sampai N, dari lapisan teratas ke lapisan terbawah. Jika titik sensor terletak pada batas lapisan outputkan nomor lapisan terkecil. 

Contoh Input 
0 0 
1000 0 
0 100 
500 50 
1000 200 
0 250 
1000 250 
500 40 
500 50 

Contoh Output 



Peta 

Time limit 1 detik 
Ani senang mengoleksi gambar peta. Suatu hari Ani ingin menggunakan komputer barunya untuk menampilkan koleksi gambar peta yang pernah dia buat. Ani mencoba membuka salah satu gambar peta untuk ditampilkan pada komputer barunya. Gambar peta asli (800x800) Setelah ditampilkan, ternyata gambar peta yang ditampilkan "dipaksa" memenuhi layar komputer sehingga gambar peta menjadi lebih pipih karena mengikuti ukuran layar. Ani tidak menyukai gambar peta yang menjadi lebih pipih karena membuat informasi yang didapat dari peta menjadi tidak akurat. Layar 800x600 menampilkan 800x800 piksel Layar 800x600 menampilkan 1067x800 piksel Kemudian, Ani menyadari bahwa layar pada komputer barunya selalu menampilkan gambar peta di tengah layar serta dapat menampilkan sejumlah piksel ukuran berapapun dan dapat diubah sesuai yang diinginkan. Secara default ukuran piksel yang ditampilkan layar mengikuti ukuran gambar. Ani ingin mengubah ukuran piksel yang ditampilkan agar gambar peta dapat ditampilkan secara penuh dan sesuai ukuran aslinya. 

Input 
Baris pertama berisi sebuah bilangan bulat T (1 <= T <= 100) yang menyatakan jumlah kasus. Setiap kasus terdiri dari dua baris, baris pertama berisi dua buah bilangan bulat Ws dan Hs yang menyatakan ukuran layar. Baris berikutnya berisi dua buah bilangan bulat Wm dan Hm yang menyatakan ukuran gambar peta. (1 <= Ws, Hs, Wm, Hm <= 10000) 

Output 
Untuk setiap kasus, output terdiri dari sebuah baris yang berisi dua buah bilangan bulat Wp dan Hp yang menyatakan ukuran piksel yang ditampilkan layar dibulatkan ke bilangan bulat terdekat. 

Contoh Input 
800 600 
800 800 
1024 768 
1024 768 

Contoh Output 
1067 800 
1024 768


Copy and WIN : http://ow.ly/KNICZ

No comments:

Post a Comment