dari Barat ke Timur, seperti ditunjukkan pada gambar di bawah ini.

dokumen-dokumen yang mirip
Gaya 1 berisi seni neoplastic modern. Misalnya: Gaya 2 berisi lansekap impresionis. Misalnya: Gaya 3 berisi lukisan aksi ekspresionis.

Algoritma Pemrograman 2B (Pemrograman C++)

PARROTS. Burung Kakatua. International Olympiad in Informatics July 2011, Pattaya City, Thailand Competition Tasks Day 2 Indonesia 1.

Sang Pelompat. Batas Waktu 1 detik. Batas Memori 64 MB

VI. FUNGSI. Fungsi Main ( ) Fungsi a ( ) Fungsi b ( ) Fungsi c ( ) Fungsi c1 ( ) Fungsi c2 ( ) Fungsi c3 ( ) Bentuk umumnya :

SUB PROGRAM : PROSEDUR & FUNGSI. Konsep Pemrograman

ALGORITMA DAN STRUKTUR DATA POINTER DAN FUNCTION

KONSEP DASAR. menyusunnya menjadi potongan-potongan mudah untuk ditangani dibanding. conquer.

Figure 1: Sebuah Penukar Manik Terhebat dengan 5 ban berjalan dan 5 penukar.

E STRUKTUR DATA & E PRAKTIK STRUKTUR DATA. Pointer & Function. Alfa Faridh Suni, S.T., M.T. PTIK

KEMENTERIAN PENDIDIKAN DAN KEBUDAYAAN

TIM ASISTEN PRAKTIKUM ALGORITMA DAN PEMROGRAMAN 2016

Implementasi Queue menggunakan Array. Imam Fahrur Rozi

Function nama dipisahkan

Array merupakan sekumpulan elemen berindeks yang memiliki tipe yang sama (base type). Pendefinisian array ditunjukkan dengan format:

Konsep Pemrograman. Bab 8. Fungsi 2. Konsep Pemrograman Politeknik Elektronika Negeri Surabaya 2006 PENS-ITS. Umi Sa adah

KEMENTERIAN PENDIDIKAN DAN KEBUDAYAAN

KEMENTERIAN PENDIDIKAN DAN KEBUDAYAAN

BAB III QUEUE (ANTRIAN)

LAPORAN PRAKTIKUM ALGORITMA DAN PEMROGRAMAN ( Implementasi Rekursi Pada Java)

Objek Data, Variabel, dan Konstanta. Konsep Bahasa Pemrograman Materi 4 Yudianto Sujana, M.Kom

8. Evaluasi Solusi dan Kriteria Berhenti Perumusan Masalah METODE PENELITIAN Studi Pustaka Pembentukan Data

SOAL OLIMPIADE MATEMATIKA SLTP TINGKAT KABUPATEN / KOTA 28 JUNI 2005

SINGLE LINKED LIST NON CIRCULAR (SENARAI BERANTAI TUNGGAL TIDAK BERPUTAR)

Contoh Kasus A : Belajar Naik Motor

Algoritma dan Pemrograman Tahar Agastani Teknik Informatika UIN

Pelacakan dan Penentuan Jarak Terpendek terhadap Objek dengan BFS (Breadth First Search) dan Branch and Bound

Algoritme dan Pemrograman

Daftar kelompok Kelas Mahasiswa Angkatan 52 Program Pendidikan Kompetensi Umum Institut Pertanian Bogor

Scope Variable. Sebuah variabel di dalam sebuah fungsi memiliki jangkauan tertentu. Skop variabel terdiri dari:

VARIABEL & TIPE DATA PEMROGRAMAN C++

Cara pertama adalah pada saat deklarasi variabel ditambahkan ke- yword const sebelum nama tipe data seperti

PERTEMUAN VI POINTER 6.1 Tujuan Praktikum 6.2 Teori Penunjang Pointer

Program pendek dan simple = mudah dihandle. Program besar, banyak dan kompleks = tidak

Dasar Pemrograman TIP FTP UB

Strategi Algoritma Penyelesaian Puzzle Hanjie

POINTER. Tim Alpro Teknik Informatika

FUNGSI II. Variabel Statis. Sifat variabel statis: Sintaks: static tipe_data nama_variabel; Contoh: static int angka;

Pengantar dalam Bahasa Pemrograman Turbo Pascal Tonny Hidayat, S.Kom

MODUL 4 PERULANGAN A. TUJUAN

MODUL PRAKTIKUM. MODUL I - VIII Modul penuntun dan bahan praktikum matakuliah algoritma dan pemograman

PERTEMUAN 2 ALGORITMA & PEMROGRAMAN

Sainstech. Dalam. Membuat. Tahap 2: Total Siswa. Jul. Mei. Mar. Feb. Apr. Jun PLC. Rata rata

OLIMPIADE SAINS TERAPAN NASIONAL 2008

Gambar 1. Tampilan Layar Sebuah Program Animasi

Fungsi Lanjut DASAR PEMROGRAMAN

Praktikum Dasar Pemrograman

Algoritma dan Pemrograman PROSEDUR. Oleh: Eddy Prasetyo N

Tabel Informasi. Hal di atas dapat dilakukan dengan menambah dan mengambil atribut identifier yang digunakan pada program, melalui tabel informasi.

PENEMPATAN KANTOR POS DENGAN ALGORITMA PROGRAM DINAMIS

OLIMPIADE SAINS NASIONAL IX

PENGENALAN BAHASA C. A. Struktur Kode Program dalam Bahasa C Secara garis besar, suatu kode program dalam bahasa C memiliki struktur umum seperti ini:

IT234 ALGORITMA DAN STRUKTUR DATA FUNGSI

Asia-Pacific Informatics Olympiad 10 Mei 2008

ARRAY. contoh : A[1] := 10; var A : array[1..10] of integer; A[nomer_indeks]

PENCARIAN BERUNTUN (SEQUENTIAL SEARCHING)

Kurikulum Qt. { Basic OOP } Chapter 4. Function

MODUL 7 FUNGSI A. Tujuan. B. Petunjuk. C. Dasar Teori

Olimpiade Sains Nasional XI Bidang Komputer/Informatika

SOAL MATEMATIKA - SMP

BAB II TEORI DASAR. Gambar 1 Kurva untuk interpolasi linier. Sehingga diperoleh persamaan dari interpolasi linier sebagai berikut :

BAB VI OBYEK DAN KELAS

POKOK BAHASAN - 2 PEMROGRAMAN MODULAR

BAB VI OBYEK DAN KELAS

Pengenalan Array. Array Satu Dimensi

Yudha Dwi P. N. S.Kom. Pertemuan 3 Aturan Penulisan Teks Algoritma

12 Mei Batas Waktu: 5 jam. 3 soal Semua soal harus dikerjakan

ALGORITMA & PEMROGRAMAN II ARRAY

ARRAY DIMENSI SATU Setiap elemen array dapat diakses melalui indeks. Indeks array secara default dimulai dari 0.

BAB IV LARIK DAN PENUNJUK

Perbandingan Pencarian Rute Optimal Pada Sistem Navigasi Lalu Lintas Kota Semarang Dengan Menggunakan Algoritma A* Dan Algoritma Djikstra

BAB IV Perancangan dan Implementasi

a[0] a[1] a[2] a[3] a[4] a[5] x

PERANCANGAN STRUKTUR DATA YANG EFISIEN UNTUK PEMROGRAMAN ANALISIS JARINGAN

Algoritma & Pemrograman #8. by antonius rachmat c, s.kom, m.cs

BAB IV IMPLEMENTASI DAN PENGUJIAN

Pembuatan Peta Permainan dengan BSP

Array Dimensi Satu. Pendahuluan. Slamet Kurniawan, S.Kom

FUNGSI & PROSEDUR. Pertemuan ke-12 dan 13

BAB III ANALISIS DAN PERANCANGAN

Pertemuan 4 ELEMEN-ELEMEN BAHASA PEMROGRAMAN

Pengenalan Bahasa C. 1. Struktur penulisan program. #include < [library2.h] > #define [nama2] [nilai] ;

PERTEMUAN V PEMROGRAMAN TERSTRUKTUR DENGAN VISUAL C Setiap bahasa C mempunyai satu fungsi dengan nama main (program utama).

Sorting Algorithms. Divide and Conquer

SMH2D3 Web Programming. 7 BAB V PHP SESSION & COOKIES. H a l IDENTITAS. Kajian Teknik pemrograman menggunakan PHP

POINTER. Tim Alpro Teknik Informatika

Hari 1 / Soal 1: Bukit dan Lembah

Pembahasan Soal Olimpiade Sains Nasional 2004 Bidang Informatika Pekanbaru, Agustus 2004

CARA MENJALANKAN PROGRAM

BAB 3 ANALISIS DAN PERANCANGAN PROGRAM

BAB V HASIL DAN PEMBAHASAN. diperhitungkan dalam menentukan metode deteksi tabrakan objek.

BAB VI ARRAY Mendeklarasikan Variabel Array int[ ] bilangan; int bilangan[ ]; Mendefinisikan Array Bilangan = new int[5]; Latihan 21. ArrSatu.

KEMENTERIAN PENDIDIKAN DAN KEBUDAYAAN

Materi 9 : QUEUE (ANTREAN) Dosen:

BAB I. LARIK (ARRAY) Array (larik) ialah penampung sejumlah data sejenis (homogen) yang menggunakan satu identifier (pengenal).

MODUL. Fungsi (Function) Modul Praktikum C++ Dasar Pemrograman Komputer JURUSAN TEKNIK ELEKTRO FAKULTAS TEKNIK

Pemrograman Dasar C. Minggu 6

Mesin Karakter dan Mesin Kata

PENGANTAR KOMPUTER & SOFTWARE 2 MATRIX

Dasar Pemrograman. Visual Studio Program C++ Sederhana. Yoannita, S.Kom.

Transkripsi:

6-13 July 2013 Brisbane, Australia Bahasa Indonesia 1.0 Kota Brisbane telah dikuasai oleh sekumpulan binatang wombats besar yang telah bermutasi, dan Anda harus menuntun orang-orang menuju ke tempat yang aman. Jalanan di kota Brisbane membentuk sebuah grid besar. Ada R jalan horisontal yang membentang dari Timur ke Barat, dinomori 0,, (R - 1) dalam urutan dari Utara ke Selatan, dan C jalan vertikal yang membentang dari Utara ke Selatan, dinomori 0,, (C - 1) dalam urutan dari Barat ke Timur, seperti ditunjukkan pada gambar di bawah ini. Para wombat menyerang dari sebelah Utara dan orang-orang melarikan diri ke arah Selatan. Orang-orang tersebut dapat berlari sepanjang jalan horisontal dalam kedua arah, tapi pada jalan vertikal mereka, menuju ke tempat yang aman. Persimpangan antara jalan horisontal P dan jalan vertikal Q ditandai dengan (P, Q). Setiap segmen jalan antara dua persimpangan mengandung sejumlah wombat, dan jumlah ini mungkin berubah sewaktu-waktu. Tugas Anda adalah memandu setiap orang dari sebuah persimpangan jalan tertentu di Utara (pada jalan horisontal nomor 0 ) ke sebuah persimpangan jalan tertentu di Selatan (pada jalan horisontal R-1 ), melalui rute dengan sesedikit mungkin wombat. Pada awalnya, Anda akan diberikan ukuran dari grid dan jumlah wombat pada setiap segmen jalan. Setelah itu, Anda akan diberikan sebanyak E buah peristiwa, yang masing-masing adalah salah satu dari: sebuah perubahan tentang banyaknya wombat pada sebuah segmen jalan; atau 1

adanya seseorang yang ingin menyelamatkan diri, berangkat dari sebuah persimpangan tertentu pada jalan horisontal nomor 0, dan Anda harus mencari rute ke sebuah persimpangan tertentu pada jalan horisontal (R-1) yang melalui sesedikit mungkin wombat. Anda harus menangani masing-masing peristiwa ini menggunakan fungsi (routine) init(), changeh(), changev() dan escape(), seperti dijelaskan di bawah ini. Gambar di atas menunjukkan kondisi awal peta dengan R=3 jalan horisontal dan C=4 jalan vertikal, dengan sejumlah wombat pada setiap segmen. Perhatikan serangkaian peristiwa di bawah ini: Seseorang muncul di persimpangan A=(0,2) dan ingin melarikan diri ke persimpangan B=(2,1). Jumlah wombat terkecil yang dapat dilalui adalah 2, seperti ditunjukkan dengan garis putus-putus. Seorang yang lain muncul di persimpangan X=(0,3) dan ingin melarikan diri ke persimpangan Y=(2,3). Jumlah wombat terkecil yang dapat dilalui adalah 7, seperti ditunjukkan juga dengan garis putus-putus. Dua peristiwa perubahan jumlah wombat terjadi: jumlah wombat pada segmen teratas jalan vertikal nomor 0 berubah menjadi 5, dan jumlah wombat pada segmen tengah jalan horisontal nomor 1 berubah menjadi 6. Lihat angka yang dilingkari pada gambar di bawah. 2

Orang ketiga muncul pada persimpangan A=(0,2) dan ingin melarikan diri ke persimpangan B=(2,1). Sekarang jumlah terkecil wombat yang dapat ia lewati adalah 5, seperti ditunjukkan dengan garis putus-putus pada gambar di atas. Anda harus mengumpulkan sebuah file yang mengimplementasikan prosedur-prosedur init(), changeh() dan changev() serta fungsi escape(), sebagai berikut: 3

init() C/C++ void init(int R, int C, int H[5000][200], int V[5000][200]); type wombatsarraytype = array[0..4999, 0..199] of LongInt; procedure init(r, C : LongInt; var H, V : wombatsarraytype); Deskripsi Prosedur ini memberikan konfigurasi awal dari peta, dan memungkinkan Anda untuk menginisialisasi variabel-variabel global maupun struktur data. Ia hanya akan dipanggil sekali sebelum ada panggilan terhadap changeh(), changev() atau escape(). Parameter R : Banyaknya jalan horisontal. C : Banyaknya jalan vertikal. H : array dua dimensi berukuran R (C - 1), dimana H[P][Q] menunjukkan banyaknya wombat pada segmen jalan horisontal antara persimpangan (P, Q) and (P, Q + 1). V : array dua dimensi berukuran (R - 1) C, dimana V[P][Q] gmenunjukkan banyaknya wombat pada segmen jalan vertikal antara persimpangan (P, Q) and (P + 1, Q). 4

changeh() C/C++ void changeh(int P, int Q, int W); procedure changeh(p, Q, W: LongInt); Deskripsi Prosedur ini akan dipanggil ketika banyaknya wombat pada segmen jalan horisontal antara persimpangan (P, Q) dan (P, Q + 1) berubah. Parameter P : Menunjukkan nomor jalan horisontal yang terpengaruh ( 0 P R - 1 ). Q : Menunjukkan antara dua jalan vertikal mana segmen tersebut berada ( 0 Q C - 2 ). W : Banyaknya wombat yang baru pada segmen tersebut ( 0 W 1,000 ). 5

changev() C/C++ void changev(int P, int Q, int W); procedure changev(p, Q, W: LongInt); Deskripsi Prosedur ini akan dipanggil ketika banyaknya wombat pada segmen jalan vertikal antara persimpangan (P, Q) and (P + 1, Q) berubah. Parameter P : Menunjukkan antara dua jalan horisontal mana segmen tersebut berada ( 0 P R - 2 ). Q : Menunjukkan nomor jalan vertikal yang terpengaruh ( 0 Q C - 1 ). W : Banyaknya wombat yang baru pada segmen tersebut ( 0 W 1,000 ). escape() C/C++ int escape(int V1, int V2); function escape(v1, V2 : LongInt) : LongInt; Deskripsi Fungsi ini harus menghitung jumlah wombat terkecil yang harus dilalui seseorang untuk berpindah dari persimpangan (0, V1) ke (R-1, V2). Parameter V1 : Menunjukkan posisi awal orang pada jalan horisontal nomor 0 ( 0 V1 C-1 ). V2 : Menunjukkan posisi akhir orang pada jalan horisontal nomor R-1 ( 0 V2 C-1 ). : jumlah wombat terkecil yang harus dilalui orang tersebut. 6

Sesi berikut ini menunjukkan contoh yang telah diberikan di atas: init(3, 4, [[0,2,5], [7,1,1], [0,4,0]], [[0,0,0,2], [0,3,4,7]]) escape(2,1) 2 escape(3,3) 7 changev(0,0,5) changeh(1,1,6) escape(2,1) 5 Batas waktu: 20 detik Batas memori: 256 MiB 2 R 5,000 1 C 200 Maksimal 500 perubahan (panggilan terhadap changeh() ataupun changev() ) Maksimal 200000 panggilan terhadap escape() Maksimal 1000 wombat pada setiap segmen 7

1 9 C = 1 2 12 3 16 4 18 C = 2 5 21 C 100 6 24 R,C 20, dan tidak ada panggilan terhadap changeh() atau changev() R,C 100, dan maksimal sebanyak 100 panggilan terhadap escape() Sampel grader pada komputer Anda akan membaca input dari file wombats.in,yang harus dalam format berikut: baris 1: R C baris 2: H[0][0] H[0][C-2] baris (R + 1) : H[R-1][0] H[R-1][C-2] baris (R + 2) : V[0][0] V[0][C-1] baris (2R) : V[R-2][0] V[R-2][C-1] baris berikutnya: E E baris berikutnya: satu peristiwa per baris, sesuai urutan terjadinya peristiwa Jika C=1, baris kosong yang mengandung banyaknya wombat pada jalan-jalan horisontal (baris 2 sampai R+1 ) tidak diperlukan. Baris untuk setiap peristiwa harus dalam salah satu di antara beberapa kemungkinan format di bawah ini: 8

Untuk menunjukkan changeh(p, Q, W) : 1 P Q W Untuk menunjukkan changev(p, Q, W) : 2 P Q W Untuk menunjukkan escape(v1, V2) : 3 V1 V2 Misalnya, untuk contoh di atas, input diberikan dalam format berikut: 3 4 0 2 5 7 1 1 0 4 0 0 0 0 2 0 3 4 7 5 3 2 1 3 3 3 2 0 0 5 1 1 1 6 3 2 1 C/C++ Anda harus #include "wombats.h". Anda harus mendefinisikan unit Wombats. Semua array dinomori mulai dari 0 (bukan 1 ). Lihat template solusi pada computer Anda sebagai contoh. 9