Seleksi Duta OSN Informatika

Tingkat Madrasah Tahun 2027

Identitas Peserta

Peserta: - | Kelas: -
Bagian A: Abstraksi Berpikir Komputasional
  1. Stimulus: Perpustakaan Madrasah memiliki koleksi 127 buku sains yang telah diberi nomor inventaris urut dari 1 hingga 127 dan disusun rapi di rak. Pustakawan menggunakan strategi algoritma Binary Search (Pencarian Biner) untuk menemukan letak buku.
    Pustakawan hendak mencari buku bernomor inventaris 89. Berapakah jumlah pembandingan/pencarian maksimum (kasus terburuk) yang dibutuhkan hingga buku tersebut pasti ditemukan?
  2. Stimulus: Sembilan siswa madrasah (A, B, C, D, E, F, G, H, I) duduk berbaris melingkar secara berurutan searah jarum jam untuk permainan logika.
    Aturan permainan: Setiap 3 menit sekali, tongkat dipegang oleh siswa ke-3 di sebelah kanannya (melompati 2 siswa). Jika pada menit ke-0 tongkat dipegang oleh siswa A, siapakah siswa yang memegang tongkat tepat pada menit ke-30?
  3. Stimulus: Jaringan komputer di Lab Komputer Madrasah menghubungkan 6 unit komputer (P, Q, R, S, T, U) menggunakan kabel LAN.
    Diketahui topologi koneksi kabel: Komputer P terhubung ke Q dan R. Komputer Q terhubung ke S. Komputer R terhubung ke T dan U. Berapakah panjang jalur terpendek (banyaknya kabel/edge yang dilalui) untuk mengirimkan paket data dari komputer S ke komputer U?
  4. Stimulus: Ahmad memiliki sebuah timbangan dua lengan yang presisi serta 4 buah anak timbangan bermassa 1 kg, 3 kg, 9 kg, dan 27 kg.
    Dengan kebebasan meletakkan anak timbangan di piringan sebelah kiri maupun piringan sebelah kanan, berapakah berat benda terbesar (dalam kg) yang dapat ditimbang secara presisi oleh Ahmad?
  5. Stimulus: Sebuah robot pembersih bergerak pada papan grid berukuran $4 \times 4$ dari titik awal $(1,1)$ di kiri-atas menuju tujuan $(4,4)$ di kanan-bawah. Robot hanya diizinkan bergerak 1 langkah ke Kanan atau 1 langkah ke Bawah.
    Jika petak $(2,3)$ dalam kondisi rusak/terhalang sehingga tidak boleh dilalui, ada berapa banyak rute perjalanan berbeda yang dapat ditempuh oleh robot?
Bagian B: Pemecahan Masalah Komputasional
  1. Stimulus: Pembina OSIS menyusun jadwal penggunaan aula untuk 5 kegiatan ekstrakurikuler dalam sehari:
    • Pramuka: [08.00 - 10.00]  • Robotik: [09.00 - 11.30]  • PMR: [10.00 - 12.00]
    • Kaligrafi: [11.00 - 13.00]  • Tahfiz: [12.00 - 14.00]
    Menggunakan prinsip algoritma Greedy Interval Scheduling, berapakah jumlah kegiatan maksimum yang dapat dilaksanakan tanpa ada jadwal yang saling bertabrakan?
  2. Stimulus: Sebuah struktur data Tumpukan (Stack) buku diawali dalam keadaan kosong.
    Dilakukan instruksi berturut-turut sebagai berikut: PUSH(5), PUSH(8), PUSH(3), POP(), PUSH(12), PUSH(7), POP(), POP().
    Berapakah nilai elemen yang berada di posisi paling atas (TOP) tumpukan saat ini?
  3. Stimulus: Koperasi madrasah memiliki ketersediaan koin pecahan nominal 1, 4, dan 5 rupiah dalam jumlah tak terbatas.
    Kasir ingin memberikan uang kembalian sebesar 12 rupiah. Menggunakan pendekatan Dynamic Programming untuk meminimalkan jumlah koin, berapakah jumlah koin paling sedikit yang dibutuhkan?
  4. Stimulus: Terdapat 5 unit komputer A, B, C, D, dan E di laboratorium. Kabel jaringan menghubungkan pasangan komputer berikut: (A,B), (A,C), (B,D), (C,D), dan (D,E).
    Berapakah jumlah komputer yang berfungsi sebagai Cut Vertex (yaitu komputer yang apabila mengalami kegagalan/mati, akan menyebabkan jaringan terpecah menjadi dua atau lebih komponen terpisah)?
  5. Stimulus: Tim Olimpiade ingin membuat kata sandi keamanan berpanjang tepat 5 karakter yang dibentuk hanya dari pilihan huruf 'O', 'S', dan 'N'.
    Dengan syarat khusus bahwa karakter pertama dan karakter terakhir harus berupa huruf 'N', ada berapa banyak kombinasi kata sandi berbeda yang dapat dibuat?
Bagian C: Pemahaman Algoritma C++
  1. Perhatikan potongan kode C++ berikut:
    soal11.cpp
    int x = 15, y = 4;
    int z = (x / y) + (x % y);
    cout << z;
    Berapakah nilai output z yang dicetak ke layar?
  2. Perhatikan fungsi rekursif C++ berikut:
    soal12.cpp
    int hitung(int n) {
        if (n <= 1) return 1;
        return n + hitung(n - 2);
    }
    Berapakah nilai kembalian dari pemanggilan fungsi hitung(7)?
  3. Perhatikan potongan kode iterasi C++ berikut:
    soal13.cpp
    int A[] = {3, 1, 4, 1, 5, 9, 2, 6};
    int total = 0;
    for (int i = 0; i < 8; i += 2) {
        total += A[i];
    }
    cout << total;
    Berapakah nilai variabel total yang akan dicetak?
  4. Perhatikan manipulasi string pada kode C++ berikut:
    soal14.cpp
    string s = "MADRASAH";
    string hasil = "";
    for (int i = s.length() - 1; i >= 0; i -= 2) {
        hasil += s[i];
    }
    cout << hasil;
    Apakah string yang dihasilkan oleh variabel hasil?
  5. Perhatikan fungsi rekursif C++ berikut:
    soal15.cpp
    int misteri(int a, int b) {
        if (b == 0) return a;
        return misteri(b, a % b);
    }
    Berapakah nilai kembalian dari pemanggilan fungsi misteri(48, 18)?