KEMENTERIAN PENDIDIKAN DAN KEBUDAYAAN

Ukuran: px
Mulai penontonan dengan halaman:

Download "KEMENTERIAN PENDIDIKAN DAN KEBUDAYAAN"

Transkripsi

1 Hak Cipta Dilindungi Undang-undang SOAL UJIAN OLIMPIADE SAINS NASIONAL 2013 CALON PESERTA INTERNATIONAL OLYMPIAD IN INFORMATICS (IOI) 2014 HARI KE-1 INFORMATIKA Waktu : 5 jam KEMENTERIAN PENDIDIKAN DAN KEBUDAYAAN DIREKTORAT JENDERAL PENDIDIKAN MENENGAH DIREKTORAT PEMBINAAN SEKOLAH MENENGAH ATAS TAHUN 2013

2 Deskripsi Tebak Himpunan Batas Waktu 1 detik Batas Memori 32 MB Pak Dengklek kini sudah pensiun dan memiliki banyak cucu. Untuk mengisi waktu luangnya, Pak Dengklek sering membuat permainan yang bisa dimainkan saat cucu-cucunya datang. Saat liburan sekolah, cucu kesayangan Pak Dengklek berlibur ke rumahnya. Ternyata, ia telah menyiapkan permainan baru untuk cucu kesayangannya tersebut! Permainannya adalah sebagai berikut. Pak Dengklek mengumumkan sebuah bilangan bulat positif N. Setelah itu, ia memilih subhimpunan S dari 1, 2,..., N. Tugas sang cucu adalah menebak S dengan paling banyak Q buah tebakan kepada Pak Dengklek. Setiap tebakan berupa sebuah subhimpunan T dari 1, 2,..., N yang harus memiliki setidaknya K anggota. Untuk setiap tebakan, Pak Dengklek akan menjawab salah satu dari ketiga jawaban berikut: YA, apabila S sama persis dengan T. BISA JADI, apabila S tidak sama dengan T namun ada minimal satu anggota S yang juga merupakan anggota T. TIDAK, apabila tidak ada satupun anggota S yang juga merupakan anggota T. Sebagai contoh, apabila N = 10, S = 2, 3, 5, 7, dan K = 2: Jika T = 2, 3, 5, 7, maka Pak Dengklek menjawab YA. Jika T = 2, 3, 7, maka Pak Dengklek menjawab BISA JADI. Jika T = 1, 2, 3, 5, 7, maka Pak Dengklek menjawab BISA JADI. Jika T = 2, 8, maka Pak Dengklek menjawab BISA JADI. Jika T = 1, 8, 9, maka Pak Dengklek menjawab TIDAK. Jika T = 4, 10, maka Pak Dengklek menjawab TIDAK. T = 5 tidak diperbolehkan karena banyak anggotanya kurang dari K. Sekarang, Anda diminta membuat sebuah program interaktif yang dapat membantu cucu Pak Dengklek memenangkan permainan ini. Format Interaksi Awalnya, program Anda harus membaca sebuah baris berisi string "Subsoal X", dengan X adalah nomor subsoal. Kemudian, program Anda harus membaca tiga buah bilangan bulat N, K, dan Q, dipisahkan oleh spasi. Setelah itu, program Anda dapat mengeluarkan paling banyak Q buah tebakan dalam format: M T 1 T 2 T 3... T M yakni, sebuah bilangan bulat M diikuti dengan M buah bilangan bulat dipisahkan spasi, yang berarti Anda memberi tebakan T = T 1, T 2,... T M, dengan syarat: K M N T 1 < T 2 <... < T M Setiap kali program Anda selesai mengeluarkan tebakan, program Anda membaca sebuah 1

3 string yang mendeskripsikan jawaban Pak Dengklek. String tersebut dijamin selalu merupakan salah satu dari: "ya", artinya Pak Dengklek menjawab YA. Anda langsung dianggap benar dalam kasus uji yang bersangkutan dan program Anda tidak perlu melakukan apa-apa lagi. "bisajadi", artinya Pak Dengklek menjawab BISA JADI. "tidak", artinya Pak Dengklek menjawab TIDAK. Pastikan program Anda berhenti melakukan interaksi setelah menerima jawaban "ya". Contoh Interaksi Berikut adalah contoh interaksi program, dengan subhimpunan S yang dimiliki grader adalah S = 2, 5, 6. Keluaran Program Peserta (interaksi selesai) Pembagian Subsoal Pada semua subsoal, berlaku: Umpan Balik Grader Subsoal bisajadi tidak bisajadi bisajadi ya S memiliki setidaknya K buah anggota. Subsoal 1 (6 poin) N = 5 K = 1 Q = 32 Subsoal 2 (12 poin) N = 6 2

4 K = 2 Q = 100 Khusus untuk subsoal 1 dan subsoal 2: Hanya terdapat sebuah kasus uji (satu subsoal dinyatakan oleh satu kasus uji), yang dapat dimainkan di sini. Dalam permainan tersebut, banyaknya tebakan yang dapat diajukan tidak dibatasi. Jika Anda sudah memenangkan permainan untuk subsoal tertentu, Anda dapat memilih pilihan pada permainan untuk mengeluarkan source code yang dapat langsung Anda kirimkan ke grader dan menjawab dengan benar pada subsoal yang telah Anda menangkan. Subsoal 3 (5 poin) 1 N 10 K = 1 Q = 2 N Subsoal 4 (8 poin) 1 N 100 K = 1 Q = N + 1 Subsoal 5 (33 poin) 1 N K = 1 Q = 2 ceil(log 2 N) + 1 S selalu berupa 1, 2,..., R dengan R N Subsoal 6 (36 poin) 2 N 100 K = 2 Q = N 2 Catatan ceil(x) adalah bilangan bulat terkecil yang lebih besar dari atau sama dengan x. 3

5 Sebuah himpunan V dikatakan merupakan subhimpunan dari himpunan S apabila setiap anggota V juga merupakan anggota S. Yang perlu diperhatikan adalah bahwa untuk tipe soal interaktif seperti ini, Anda harus selalu memberikan perintah "fflush(stdout);" (bagi pengguna C/C++) atau "flush(output);" (bagi pengguna PASCAL) setiap kali Anda mencetak keluaran (dengan kata lain, setiap kali ada perintah mencetak keluaran misalnya write, writeln, printf, cout, atau puts, tepat di bawahnya harus ada perintah fflush/flush). Sebagai contoh, berikut adalah contoh source code dalam bahasa Pascal yang akan selalu menebak semua N barang tanpa mempedulikan nilai N, K, dan Q yang diberikan. var subsoal: string; N, K, Q, i: longint; begin readln(subsoal); readln(n, K, Q); write(n); for i := 1 to N do write(' ', i); writeln; flush(output); end. Dan berikut adalah contoh source code dalam bahasa C++. #include <cstdio> #include <cstring> char subsoal[100]; int nomor; int N, K, Q, i; int main() scanf("%s %d", subsoal, &nomor); scanf("%d %d %d", &N, &K, &Q); printf("%d", N); 4

6 for(i = 1; i <= N; i++) printf(" %d", i); printf("\n"); fflush(stdout); return 0; Peringatan Apabila program Anda melakukan salah satu dari hal-hal di bawah ini: mengeluarkan tebakan atau menjawab tidak sesuai format sehingga tidak dikenali oleh grader, atau menebak lebih dari Q kali, maka program Anda akan dihentikan secara otomatis dan Anda tidak memperoleh nilai pada kasus uji yang bersangkutan. Perhatikan bahwa untuk soal ini, jika solusi Anda dapat menyelesaikan subsoal X, tidak dijamin bahwa solusi tersebut juga dapat menyelesaikan subsoal-subsoal Y dengan Y < X. 5

7 Deskripsi Berbaris Sebelum Masuk Batas Waktu 1 detik Batas Memori 32 MB Pak Dengklek adalah seorang wali murid di SD TOKI. Setiap pagi, para siswa diharuskan untuk berbaris di depan pintu kelas sebelum masuk. Namun, Pak Dengklek memiliki sedikit kesulitan karena tiap siswa memiliki keinginan tersendiri dalam berbaris. Terdapat N orang siswa di SD tersebut, dinomori dari 1 sampai dengan N. Siswa nomor 1 berada di paling depan dan siswa nomor N berada di paling belakang barisan. Siswa ke-i memiliki tinggi badan sebesar T i satuan. Setiap siswa ke-i ingin agar saat ia berbaris, banyaknya siswa di depannya yang memiliki tinggi badan kurang dari atau sama dengan tinggi badannya, berada di antara A i dan B i orang siswa, inklusif. Bantulah Pak Dengklek membariskan siswa-siswanya dalam satu baris sedemikian sehingga semua keinginan siswanya terpenuhi. Format Masukan Baris pertama pada berkas masukan berisi string "Subsoal X" dengan X menyatakan nomor subsoal. Baris kedua berisi sebuah bilangan bulat N. N baris berikutnya masing-masing berisi 3 buah bilangan bulat T i, A i, dan B i. Format Keluaran Keluarkan salah satu barisan yang memenuhi, dalam format S 1 S 2 S 3... S N dengan S i adalah nomor siswa yang berada pada posisi ke-i dari depan. Contoh Masukan Subsoal Contoh Keluaran Pembagian Subsoal Pada semua subsoal, berlaku: 1 T i

8 0 A i B i N Semua nilai T i berbeda-beda Dijamin ada setidaknya sebuah barisan yang memenuhi syarat Subsoal 1 (9 poin) Hanya terdapat sebuah kasus uji, yang dapat diunduh di sini. Subsoal 2 (20 poin) Hanya terdapat sebuah kasus uji, yang dapat diunduh di sini. Subsoal 3 (21 poin) 1 N 8 Subsoal 4 (50 poin) 1 N

9 Deskripsi Lipat Kertas Batas Waktu 0,2 detik Batas Memori 32 MB Pak Dengklek sekarang sedang sibuk memainkan kertas origami buatan Pak Ganesh yang berbentuk persegi panjang dengan ukuran 1 N petak berwarna-warni. Petak warna paling kiri disebut petak 1, di kanannya disebut petak 2, dan seterusnya. Kertas origami ini unik, karena bagian yang dapat dilipat hanyalah sisi persinggungan 2 buah petak saja. Dengan demikian, terdapat N 1 lekukan yang dapat dilipat. Pak Ganesh sebelumnya telah melipat-lipat kertasnya menjadi berukuran 1 1 (tentu hasilnya sangatlah tebal!). Kemudian, Pak Ganesh membuka lipatan-lipatan kertas tersebut. Hasilnya, kertas tersebut memiliki bekas lekukan-lekukan pada bagian yang dilipat dan lekukan-lekukan tersebut menjadi cekungan ke atas ataupun cekungan ke bawah. Gambar di atas merupakan kondisi kertas yang dibuka dari lipatannya dan dilihat dari sisi samping ketika permukaan kertas menghadap ke atas dan petak nomor 1 berada di paling kiri. Kali ini Pak Ganesh tidak lagi memberikan Pak Dengklek kertas yang dibuka dari lipatannya, melainkan Pak Ganesh memberikan urutan petak warna hasil akhir lipatan apabila dilihat dari samping kertas ketika permukaan kertas menghadap ke atas dan petak nomor 1 berada di paling kiri. Pak Dengklek diminta untuk mencari tahu bagaimana kondisi lekukan kertas tersebut apabila dibuka dari lipatannya! 8

10 Format Masukan Baris pertama pada berkas masukan berisi string "Subsoal X" (tanpa tanda kutip) dengan X menyatakan nomor subsoal. Baris kedua berisi sebuah bilangan bulat N, yaitu banyaknya petak warna-warni pada kertas. Baris ketiga berisi N buah bilangan bulat dipisahkan spasi, yaitu urutan petak warna hasil akhir lipatan apabila dilihat dari sisi samping kertas ketika permukaan kertas menghadap ke atas dan petak nomor 1 berada di paling kiri.. Format Keluaran Keluaran terdiri dari 1 baris yang berisi string S. String S memiliki panjang N 1 karakter yang menunjukkan kondisi kertas setelah dibuka dari lipatannya. Karakter ke-i pada S menunjukkan lekukan di antara petak i dan petak i + 1. Karakter 'A' menunjukkan lekukan tersebut berupa cekungan ke atas, dan karakter 'B' menunjukkan lekukan tersebut berupa cekungan ke bawah. Apabila tidak ada kemungkinan solusi, S berisi string INVALID (tanpa tanda kutip). Apabila terdapat lebih dari satu kemungkinan solusi, keluarkan yang mana saja. Contoh Masukan 1 Subsoal Contoh Keluaran 1 BBABBAA Contoh Masukan 2 Subsoal Contoh Keluaran 2 INVALID Penjelasan Contoh Kasus Uji Gambar berikut adalah kondisi kertas yang ditunjukkan oleh string S pada contoh keluaran 1. Kemudian cobalah lipat pada bagian di antara petak 4 dan petak 5. 9

11 Selanjutnya, lipatlah bagian antara petak 2 dan petak 3 maupun bagian antara petak 7 dan petak 6. Terakhir, lipatlah lipatan bagian yang tersisa. Didapat hasil akhir lipatan dengan urutan petak warna : (dilihat dari bagian atas ke bawah), yang merupakan urutan petak warna yang ditanyakan oleh Pak Ganesh pada contoh masukan 1. Perhatikan bahwa apabila kertas tersebut dibuka kembali, maka kondisi lekukan kertas tidak berbeda dengan kondisi lekukan kertas sebelum dilipat. Sehingga, lekukan kertas tersebut merupakan salah satu solusi yang mungkin. Pembagian Subsoal Subsoal 1 (9 poin) Hanya terdapat sebuah kasus uji, yang dapat diunduh di sini. Subsoal 2 (9 poin) Hanya terdapat sebuah kasus uji, yang dapat diunduh di sini. 10

12 Subsoal 3 (30 poin) 2 N Tidak ada masukan dengan keluaran INVALID Subsoal 4 (7 poin) 2 N 4 Subsoal 5 (28 poin) 2 N Subsoal 6 (17 poin) 2 N

13 Deskripsi Menggelindingkan Kubus Batas Waktu 1 detik Batas Memori 32 MB Diberikan sebuah kubus yang masing-masing muka sisinya dinomori antara 1 hingga 6, inklusif. Kubus itu diletakkan pada bidang datar yang luasnya tidak terbatas. Pada mulanya, masing-masing sisi kubus itu menghadap ke arah atas, bawah, utara, timur, selatan, dan barat yang secara berturut-turut dinomori dengan P 1, P 2, P 3, P 4, P 5, dan P 6. Anda diperbolehkan menggelindingkan kubus itu ke arah utara, timur, barat, atau selatan. Akibat dari menggelindingkan kubus sekali adalah perubahan konfigurasi nomor pada muka sisinya yang tergantung pada arah kubus digelindingkan. Berikut ini adalah contoh sebuah kubus yang kebetulan dibuat mirip dengan dadu. Setiap langkah dilakukan sekali dan merupakan lanjutan dari langkah sebelumnya. Muka Kubus Awal Digelindingkan ke Utara Kemudian ke Timur Kemudian ke Selatan Kemudian ke Barat P 1 (atas) P 2 (bawah) P 3 (utara) P 4 (timur) P 5 (selatan) P 6 (barat) Tugas Anda adalah menggelindingkan kubus dengan sesedikit mungkin langkah sedemikian sehingga konfigurasi nomor-nomor pada muka sisi atas, bawah, utara, timur, selatan, dan barat secara berturut-turut menjadi Q 1, Q 2, Q 3, Q 4, Q 5, dan Q 6. Format Masukan Baris pertama pada berkas masukan berisi string "Subsoal X" dengan X menyatakan nomor subsoal. Baris kedua berisi 6 buah bilangan bulat dipisahkan spasi yang secara berturut-turut menyatakan P 1, P 2, P 3, P 4, P 5, dan P 6. Baris ketiga berisi 6 buah bilangan bulat dipisahkan spasi yang secara berturut-turut menyatakan Q 1, Q 2, Q 3, Q 4, Q 5, dan Q 6. Format Keluaran Sebuah baris berisi sebuah bilangan bulat yang menyatakan banyaknya langkah penggelindingan yang diperlukan agar tujuan seperti pada deskripsi soal tercapai dan banyaknya langkah penggelindingan tersebut minimal. Contoh Masukan Subsoal

14 Contoh Keluaran 2 Penjelasan Contoh Kasus Uji Pada contoh masukan, salah satu cara untuk mendapatkan konfigurasi akhir dalam dua langkah adalah gelindingkan kubus ke barat, kemudian ke selatan. Setelah langkah pertama, konfigurasi kubus adalah Pembagian Subsoal Pada semua subsoal, berlaku: Nilai-nilai Q 1,Q 2, Q 3, Q 4, Q 5, dan Q 6 adalah sedemikian sehingga terdapat cara untuk mencapai konfigurasi akhir. Subsoal 1 (8 poin) Hanya terdapat sebuah kasus uji, dan dapat diunduh di sini. Subsoal 2 (10 poin) Hanya terdapat sebuah kasus uji, dan dapat diunduh di sini. Subsoal 3 (16 poin) P 1 = 2 P 2 = 2 P 3 = 1 P 4 = 1 P 5 = 1 P 6 = 1 Subsoal 4 (24 poin) P 1 = 2 P 2 = 1 P 3 = 1 P 4 = 1 P 5 = 1 13

15 P 6 = 1 Subsoal 5 (42 poin) Untuk setiap i, 1 P i 6. Mungkin ada dua atau lebih muka sisi dengan nomor yang sama. 14

16 Hak Cipta Dilindungi Undang-undang SOLUSI UJIAN OLIMPIADE SAINS NASIONAL 2013 CALON PESERTA INTERNATIONAL OLYMPIAD IN INFORMATICS (IOI) 2014 HARI KE-1 INFORMATIKA Waktu : 5 jam KEMENTERIAN PENDIDIKAN DAN KEBUDAYAAN DIREKTORAT JENDERAL PENDIDIKAN MENENGAH DIREKTORAT PEMBINAAN SEKOLAH MENENGAH ATAS TAHUN 2013

17 Tebak Himpunan Batas Waktu: 1 detik Batas Memory: 32 MB #include <iostream> #include <cstdio> #include <algorithm> #include <cmath> #include <cstring> #include <string> #include <queue> #include <stack> #include <vector> #include <utility> #include <map> #define REP(a,b) for (int a=0; a<b; a++) #define FOR(a,b,c) for (int a=b; a<=c; a++) #define FORD(a,b,c) for (int a=b; a>=c; a--) #define RESET(a,b) memset(a, b, sizeof a) #define EPS 1e-9 #define INF #define LL long long #define F first #define S second #define MP make_pair #define PB push_back #define PII pair<int,int> #define PDD pair<double,double> #define puts("") using namespace std; int n,k,q; char sc[1000]; void on() bool ada[105]; RESET(ada,0); REP(i,n) printf("1 %d\n", i+1); fflush(stdout); scanf("%s", sc); if (sc[0]!= 't') ada[i] = 1; int cnt = 0; REP(i,n) if (ada[i]) cnt++; printf("%d", cnt); REP(i,n) if (ada[i]) printf(" %d", i+1); Solusi Hari-1-1

18 printf("\n"); fflush(stdout); //must be true void ologn() int ki,ka,tgh,ans; //ONE ki = 1; ka = n; while (ki <= ka) tgh = (ki + ka) >> 1; //ada: tgh? printf("1 %d\n", tgh); fflush(stdout); int h = 0; scanf("%s", sc); if (sc[0]!= 't') h = 1; if (h) ans = tgh; ki = tgh + 1; else ka = tgh - 1; printf("%d", ans); FOR(i,1,ans) printf(" %d", i); printf("\n"); fflush(stdout); //must be true void grim() //eleminate all 0s bool ada[105]; FOR(i,1,n) ada[i] = 1; FOR(i,1,n) FOR(j,i+1,n) printf("2 %d %d\n", i, j); fflush(stdout); scanf("%s", sc); if (sc[0] == 't') //haha! ada[i] = 0; ada[j] = 0; Solusi Hari-1-2

19 //odd 0 or even 0? int cnt = 0; int h0 = 0; FOR(i,1,n) if (ada[i]) cnt++; else h0++; printf("%d", cnt); FOR(i,1,n) if (ada[i]) printf(" %d", i); printf("\n"); fflush(stdout); scanf("%s", sc); if (sc[0] == 'y') //sweet, even 0 return; else //some work needed, it is odd 0! int liar = -1; FOR(i,1,n) if (ada[i]) printf("%d", cnt-1); FOR(j,1,n) if (j!= i && ada[j]) printf(" %d", j); printf("\n"); fflush(stdout); bool h = 0; scanf("%s", sc); if (sc[0] == 'y') return; int main() gets(sc); scanf("%d %d %d", &n, &k, &q); if (k == 1) if (q > n) on(); else ologn(); else grim(); return 0; Solusi Hari-1-3

20 Berbaris Sebelum Masuk Batas Waktu: 1 detik Batas Memory: 32 MB #include<iostream> #include<cstring> #include<cstdio> #include<vector> #include<queue> #include<utility> #include<cassert> #include<algorithm> #define S 1000 #define N 1000 using namespace std; char asal[100]; int kasus,banyak; pair<int,int> batas[n+5]; vector<int> orang[s+5]; bool ada[s+5]; int jawab[n+5],prev[n+5]; bool cf(const int &a,const int &b) return (batas[a] <= batas[b]); int main() assert(scanf("%s %d",asal,&kasus) == 2); assert(scanf("%d",&banyak) == 1); assert(1 <= banyak && banyak <= N); assert(0 <= kasus && kasus <= 4); assert(strcmp(asal,"subsoal") == 0); if (kasus == 3) assert(banyak <= 8); memset(ada,0,sizeof(ada)); for (int i=0,sem;i<banyak;++i) assert(scanf("%d %d %d",&sem,&batas[i].first,&batas[i].second) == 3); assert(0 <= batas[i].first && batas[i].first <= batas[i].second && batas[i].second <= banyak); assert(1 <= sem && sem <= S); assert(!ada[sem]); ada[sem] = true; orang[sem].push_back(i); for (int i=1;i<=s;++i) sort(orang[i].begin(),orang[i].end(),cf); int masuk = 0; for (int i=1;i<=s;++i) if (orang[i].size() == 0) continue; priority_queue<pair<int,int>,vector<pair<int,int> >,greater<pair<int,int> > > pq; Solusi Hari-1-4

21 for (int j=0;j<masuk;++j) prev[j] = jawab[j]; jawab[j] = 0; int indeks1 = 0; int indeks2 = 0; for (int j=0;j<masuk + orang[i].size();++j) while (indeks2 < (int)orang[i].size() && batas[orang[i][indeks2]].first == j) pq.push(make_pair(batas[orang[i][indeks2]].second,orang[i][indeks2])); ++indeks2; if (pq.size() > 0) jawab[j] = pq.top().second; pq.pop(); else jawab[j] = prev[indeks1]; ++indeks1; masuk += orang[i].size(); assert(masuk == banyak); printf("%d",jawab[0]+1); for (int i=1;i<banyak;++i) printf(" %d",jawab[i]+1); printf("\n"); return 0; Solusi Hari-1-5

22 Lipat Kertas Batas Waktu: 0,2 detik Batas Memory: 32 MB #include <cstdio> #include <cstdlib> #include <stack> #include <cassert> #include <algorithm> using namespace std; int n,i,x,size,sub; int pos[ ],bracket[ ]; bool valid,udah[ ]; char s[100]; int st[ ]; int main() scanf("%s%d",s,&sub); // Kasus scanf("%d",&n); if (sub == 3) assert(2 <= n && n <= 1000); if (sub == 4) assert(2 <= n && n <= 4); if (sub == 5) assert(2 <= n && n <= 1000); if (sub == 6) assert(2 <= n && n <= ); for (i=1 ; i<=n ; i++) scanf("%d",&x); assert(1 <= x && x <= n); //printf("%d\n",i); assert(udah[x] == false); udah[x] = true; pos[x] = i; // Simpan posisinya saja valid = true; for (i=2 ; i<=n ; i+=2) bracket[pos[i]] = i; bracket[pos[i-1]] = i; for (i=1 ; i<=n ; i++) if (bracket[i]!= 0) if (size == 0 bracket[i]!= st[size-1]) st[size] = bracket[i]; size++; else size--; if (size!= 0) valid = false; for (i=1 ; i<=n ; i++) bracket[i] = 0; size = 0; for (i=3 ; i<=n ; i+=2) bracket[pos[i]] = i; Solusi Hari-1-6

23 bracket[pos[i-1]] = i; for (i=1 ; i<=n ; i++) if (bracket[i]!= 0) if (size == 0 bracket[i]!= st[size-1]) st[size] = bracket[i]; size++; else size--; if (size!= 0) valid = false; if (!valid) printf("invalid\n"); else for (i=1 ; i<n ; i++) if (i % 2 == 1) if (pos[i] < pos[i+1]) printf("a"); else printf("b"); else if (pos[i] < pos[i+1]) printf("b"); else printf("a"); printf("\n"); //sort(pos+1,pos+1+n); //for (i=1 ; i<=n ; i++) swap(pos[i],pos[(13*i+42)%100]); Solusi Hari-1-7

24 Menggelindingkan Kubus Batas Waktu: 0,2 detik Batas Memory: 32 MB #include <cstdio> #include <iostream> #include <vector> #include <algorithm> #include <stack> #include <queue> #include <map> #include <set> #include <utility> #include <sstream> #include <string> #include <iomanip> #include <cmath> #include <cstdlib> #include <cstring> using namespace std; #define fi first #define sc second #define MP make_pair #define pb push_back #define PI acos(-1.0) //alternative #define PI (2.0 * acos(0.0)) #define vi vector<int> #define vii vector<ii> #define ALL(c) (c).begin(), (c).end() #define RESET( c,a ) memset( (c), a, sizeof(c) ) #define REP( a,b,c ) for ( int a=b, _c=c; a<_c; ++a ) #define RED( a,b,c ) for ( int a=b, _c=c; a>=_c; --a ) #define REPI( it, c ) for ( typeof( (c).begin() ) it=(c).begin(); it!=(c).end(); ++it ) const int big = ; const double INF = 1e9; const double EPS = 1e-9; typedef long long LL; typedef pair<int,int> pii; typedef pair<ll,ll> pll; #define _DEBUG 1 #ifdef _DEBUG #define DEBUG printf #else #define DEBUG if (0) printf #endif // NTU The Lyons' Template // class dice public: int i[6]; Solusi Hari-1-8

25 dice() REP(x,0,6) i[x]=0; dice( int a[] ) REP(x,0,6) i[x]=a[x]; dice rot( int a ) int z = i[0]; dice ret; REP(x,0,6) ret.i[x] = i[x]; if (a==1) //utara ret.i[0] = i[4]; ret.i[4] = i[1]; ret.i[1] = i[2]; ret.i[2] = z; else if (a==2) //timur ret.i[0] = i[3]; ret.i[3] = i[1]; ret.i[1] = i[5]; ret.i[5] = z; else if (a==3) //selatan ret.i[0] = i[2]; ret.i[2] = i[1]; ret.i[1] = i[4]; ret.i[4] = z; else if (a==4) //barat ret.i[0] = i[5]; ret.i[5] = i[1]; ret.i[1] = i[3]; ret.i[3] = z; return ret; ; bool operator== (dice cmp) REP(x,0,6) if (i[x]!= cmp.i[x]) return false; return true; bool ud[8][8][8][8][8][8]; bool cek( dice a ) bool &lho = ud[a.i[0]][a.i[1]][a.i[2]][a.i[3]][a.i[4]][a.i[5]], ret = lho; if (!lho) lho = true; return ret; Solusi Hari-1-9

26 int main() int S; scanf("subsoal %d", &S); int i[6], h[6]; REP(x,0,6) scanf("%d", &h[x]); REP(x,0,6) scanf("%d", &i[x]); if (S==1) printf("2\n"); else if (S==2) printf("3\n"); else if (S==3) if ((i[0]==2) && (i[1]==2)) printf("0\n"); else printf("1\n"); else if (S==4) if (i[0]==2) printf("0\n"); else if (i[1]==2) printf("2\n"); else printf("1\n"); else RESET( ud,0 ); dice cur = dice(h), fin = dice(i); queue <dice> q; int o = 0; q.push( cur ); while (!q.empty()) int SZ = q.size(); while (SZ--) cur = q.front(); q.pop(); if (!cek(cur)) if (cur == fin) printf("%d\n",o); return 0; q.push( cur.rot(1) ); q.push( cur.rot(2) ); q.push( cur.rot(3) ); q.push( cur.rot(4) ); ++o; return 0; Solusi Hari-1-10

27 Hak Cipta Dilindungi Undang-undang SOAL UJIAN OLIMPIADE SAINS NASIONAL 2013 CALON PESERTA INTERNATIONAL OLYMPIAD IN INFORMATICS (IOI) 2014 HARI KE-2 INFORMATIKA Waktu : 5 jam KEMENTERIAN PENDIDIKAN DAN KEBUDAYAAN DIREKTORAT JENDERAL PENDIDIKAN MENENGAH DIREKTORAT PEMBINAAN SEKOLAH MENENGAH ATAS TAHUN 2013

28 Deskripsi Mengosongkan Matriks Batas Waktu 1 detik Batas Memori 32 MB Di sela-sela waktu santai sore, Pak Dengklek memberikan sebuah tantangan bagi bebekbebeknya. Pak Dengklek akan memberikan sebuah matriks berukuran N M (N baris M kolom) berisi bilangan-bilangan. Baris-baris dinomori dari 1 sampai dengan N dari atas ke bawah. Kolom-kolom dinomori dari 1 sampai dengan M dari kiri ke kanan. Kemudian, pada setiap langkah, para bebek dapat melakukan salah satu dari 3 operasi di bawah ini pada matriks tersebut. 1. Memilih sebuah bilangan bulat a kemudian menambahkan semua bilangan pada salah satu kolom dengan a. 2. Memilih sebuah bilangan bulat b kemudian mengurangi semua bilangan pada salah satu kolom dengan b. 3. Memilih sebuah bilangan bulat k kemudian mengalikan semua bilangan pada salah satu baris dengan 2 k. Kemudian setiap bilangan hasil operasi tersebut akan dimodulo dengan ( ). Yang harus dilakukan oleh para bebek adalah menerapkan serangkaian operasi di atas sedemikian sehingga pada akhirnya semua bilangan dalam matriks tersebut bernilai 0. Sebagai contoh, perhatikan matriks yang diberikan Pak Dengklek di bawah ini. Salah satu rangkaian operasi yang dapat diterapkan oleh para bebek adalah sebagai berikut. No Operasi Hasil Matriks 1 Mengalikan bilangan pada baris 2 dengan 2 (k = 1) 2 Mengurangi bilangan pada kolom 1 dengan 1 3 Mengalikan bilangan pada baris 2 dengan 2 (k = 1) 4 Mengurangi bilangan pada kolom 1 dengan 2 1

29 No Operasi Hasil Matriks 5 Menambahkan bilangan pada kolom 2 dengan 1 6 Mengalikan bilangan pada baris 2 dengan 2 (k = 1) 7 Mengurangi bilangan pada kolom 2 dengan 1 8 Mengalikan bilangan pada baris 2 dengan 2 (k = 1) 9 Mengurangi bilangan pada kolom 2 dengan 2 Karena Pak Dengklek menyediakan bonus makanan ringan bagi yang berhasil memecahkan tantangan ini, para bebek pun berlomba-lomba untuk mencari jawabannya. Agar para bebek tidak terlalu lama dalam memikirkan solusi tantangan ini, Pak Dengklek membatasi banyaknya operasi yang dapat dilakukan maksimum sebesar operasi. Rupa-rupanya, Kwek si bebek nakal bermaksud curang dengan meminta bantuan kepada Anda. Walaupun Anda tidak bermaksud membantunya, Anda sendiri akhirnya juga merasa penasaran dengan tantangan pak Dengklek dan ingin memecahkannya. Format Masukan Baris pertama pada berkas masukan berisi string Subsoal X dengan X menyatakan nomor subsoal dari berkas masukan saat ini. Kemudian di baris kedua terdapat 2 buah bilangan bulat yang dipisahkan oleh tepat sebuah spasi, yaitu N dan M. N buah baris berikutnya mendeskripsikan matriks yang diberikan oleh Pak Dengklek dan pada masing-masing baris terdapat tepat M buah bilangan bulat dipisahkan spasi. Format Keluaran Untuk masukan yang diberikan, pada baris pertama cetak sebuah bilangan S, yang menyatakan banyaknya operasi yang Anda perlukan untuk mengubah semua bilangan matriks pada berkas masukan menjadi 0. Kemudian cetak S baris. Masing-masing baris menyatakan operasi yang dilakukan terhadap matriks yang diberikan (sesuai urutan operasi tersebut diterapkan kepada matriks), dengan format: 1. Jika operasi tersebut adalah menambahkan semua bilangan pada suatu kolom dengan suatu bilangan, cetak "1 c a" (tanpa tanda kutip) dengan c menyatakan nomor kolom yang ditambah dan a menyatakan besar bilangan yang ditambahkan. 2. Jika operasi tersebut adalah mengurangi semua bilangan pada suatu kolom tertentu 2

30 dengan suatu bilangan, cetak "2 c b" (tanpa tanda kutip) dengan c menyatakan nomor kolom yang dikurangi dan b menyatakan besar bilangan yang dikurangkan. 3. Jika operasi tersebut adalah mengalikan semua bilangan pada suatu baris tertentu dengan 2 k, cetak "3 r k" (tanpa tanda kutip) dengan r menyatakan nomor baris yang dikali dan k menyatakan besaran pangkat dari 2. Untuk setiap operasi, harus berlaku 0 a, b, k < Contoh Masukan Subsoal Contoh Keluaran Pembagian Subsoal Pada semua subsoal, berlaku: Setiap anggota matriks berupa bilangan bulat nonnegatif kurang dari Subsoal 1 (11 poin) Hanya terdapat sebuah kasus uji, yang dapat diunduh di sini. Subsoal 2 (13 poin) Hanya terdapat sebuah kasus uji, yang dapat diunduh di sini. Subsoal 3 (7 poin) N = 1 1 M 20 Subsoal 4 (41 poin) 1 N 20 M = 1 3

31 Subsoal 5 (28 poin) 1 N, M 20 4

32 Deskripsi Kontes Menari Batas Waktu 2 detik Batas Memori 32 MB Kwek, salah satu bebek Pak Dengklek, sedang berlatih tari tradisional yaitu Tari Bebek. Tujuan Kwek berlatih tak lain dan tak bukan adalah untuk mengikuti kontes tahunan Tari Bebek. Dalam lomba, setiap peserta menampilkan beberapa macam gerakan Tari Bebek untuk memikat para juri dengan keindahannya. Kwek sendiri sudah menguasai N macam gerakan yang dinomori dari 1 sampai dengan N. Tiap gerakan memiliki nilai dasar keindahan. Gerakan ke-i memiliki nilai dasar keindahan D i. Terdapat empat jenis gerakan dalam Tari Bebek, yaitu gerakan biasa, gerakan memukau, gerakan melelahkan, dan gerakan meyakinkan. Dijamin hanya terdapat sebuah gerakan meyakinkan dalam Tari Bebek. Dalam kontes Tari Bebek, setiap peserta harus memilih tepat R buah gerakan yang berbedabeda untuk ditampilkan, yang masing-masing dilakukan selama 1 menit. Nomor dari gerakan yang dilakukan pada menit ke-t (untuk 1 t R) dinyatakan oleh G t. Setelah menampilkan gerakan G t peserta akan mendapatkan skor K t yang besarnya dipengaruhi oleh D Gt dan gerakan-gerakan sebelumnya, yang selengkapnya dihitung menurut aturan berikut. 1. Mula-mula, nilai K t adalah D Gt (yakni, nilai dasar keindahan gerakan nomor G j ). 2. a. Jika t > 1 dan gerakan G t-1 adalah gerakan memukau, maka nilai K t dikalikan dua. b. Jika t > 1 dan gerakan G t-1 adalah gerakan melelahkan, maka nilai K t dibagi dua (dibulatkan ke bawah). 3. Jika untuk suatu m < t, gerakan G m adalah gerakan meyakinkan, maka nilai K t ditambah sebesar Y. Untuk kontes Tari Bebek tahun ini, telah diundang J orang juri yang dinomori dari 1 sampai dengan J. Masing-masing juri menetapkan nilai batas keindahan. Juri ke-i menetapkan nilai batas keindahan sebesar H i. Juri ke-i akan terkesima dengan tarian peserta jika K 1 + K K R > H i. Berikut ini adalah contoh rangkaian gerakan beserta simulasi perhitungan nilai keindahan dari setiap gerakan tersebut, dengan R = 6. t D Gt Jenis Gerakan G t K t 1 10 biasa meyakinkan (Y = 3) biasa = memukau = melelahkan (7 2) + 3 = biasa (9 / 2) + 3 = = 7 5

33 t D Gt Jenis Gerakan G t K t K 1 + K K 6 62 Diberikan daftar gerakan yang dikuasai oleh Kwek, dan juga batas nilai keindahan masingmasing juri yang hadir. Tentukan banyaknya kemungkinan rangkaian gerakan Tari Bebek berbeda yang dapat ditampilkan oleh Kwek untuk membuat masing-masing juri terkesima. Format Masukan Baris pertama pada berkas masukan berisi string "Subsoal X" dengan X menyatakan nomor subsoal. Baris kedua masukan berisi empat buah bilangan bulat N, R, Y, dan J, masing-masing dipisahkan oleh spasi. N baris berikutnya masing-masing berisi informasi gerakan yang dikuasai Kwek. Tiap baris terdiri dari sebuah buah bilangan bulat D i dan sebuah karakter T i dipisahkan oleh spasi, yang menyatakan nilai keindahan dari gerakan ke-i dan jenis dari gerakan tersebut. T i selalu merupakan salah satu dari 'B', 'P', 'L', dan 'Y', yang secara berurutan menyatakan gerakan biasa, memukau, melelahkan, dan meyakinkan. J baris berikutnya masing-masing berisi sebuah bilangan bulat H i yang menyatakan nilai batas keindahan dari juri ke-i. Format Keluaran Keluarkan J buah baris. Baris ke-i harus berisi banyaknya kemungkinan rangkaian gerakan Tari Bebek yang dapat dibawakan oleh Kwek agar dapat membuat juri ke-i terkesima. Contoh Masukan Subsoal B 15 B 5 P 300 L 7 B Contoh Keluaran Penjelasan Contoh Kasus Uji Untuk juri pertama, karena batas nilai keindahannya hanya 1, semua permutasi dari dua gerakan yang ada dapat membuatnya terkesima. Untuk juri kedua, tidak ada satupun rangkaian gerakan yang dapat membuat juri tersebut 6

34 terkesima. Untuk juri ketiga, hanya ada satu cara yang dapat membuat juri tersebut terkesima yaitu menampilkan gerakan 3 kemudian dilanjutkan gerakan 4. Total keindahannya adalah 5 + (2 300) = 605. Pembagian Subsoal Pada semua subsoal, berlaku: 1 N 10 0 < R N 0 Y H i D i Dijamin bahwa hanya terdapat paling banyak satu buah gerakan meyakinkan pada masukan. Subsoal 1 (9 poin) Hanya terdapat sebuah kasus uji, yang dapat diunduh di sini. Subsoal 2 (9 poin) Hanya terdapat sebuah kasus uji, yang dapat diunduh di sini. Subsoal 3 (17 poin) 1 J 10 Semua gerakan pada masukan merupakan gerakan biasa. Subsoal 4 (27 poin) 1 J 10 Subsoal 5 (38 poin) 1 J

35 Deskripsi Cuti Liburan Batas Waktu 1 detik Batas Memori 32 MB Karena sedikit jenuh dengan pekerjaannya di Kantor Bebek, minggu ini Pak Dengklek mengajukan cuti liburan. Beruntungnya, atasan Pak Dengklek langsung menyetujui cuti tersebut. Pak Dengklek sangat senang dan langsung mempersiapkan segala sesuatu untuk liburannya mendatang. Salah satu hal yang Pak Dengklek persiapkan adalah koper berisi baju-bajunya selama liburan. Saat ini, ia memiliki N helai baju di rumahnya, yang dinomori dari 1 sampai dengan N. Baju ke-i memiliki berat sebesar B i satuan, daya tahan pakai selama D i hari, dan warna yang dinyatakan dengan sebuah bilangan W i. Tentu saja, bilangan yang berbeda menyatakan warna yang berbeda. Koper Pak Dengklek hanya dapat memuat baju-baju dengan total berat maksimum sebesar P satuan. Ia ingin agar dapat membawa baju-baju dengan total daya tahan sebesar mungkin, namun dengan total berat tidak melebihi P. Ia juga sangat memperhatikan penampilan; oleh karena itu, ia ingin agar terdapat setidaknya Q warna berbeda pada baju-baju yang dibawanya. Tentukan total daya tahan baju-baju terbesar yang dapat dibawa Pak Dengklek dan memenuhi syarat-syarat tersebut. Format Masukan Baris pertama berisi string "Subsoal X" dengan X menyatakan nomor subsoal. Baris kedua berisi tiga buah bilangan bulat N, P, dan Q. N baris berikutnya masing-masing berisi tiga buah bilangan bulat B i, D i, dan W i. Format Keluaran Sebuah baris berisi sebuah bilangan bulat yang menyatakan total daya tahan terbesar yang mungkin. Apabila syarat-syarat tersebut tidak mungkin terpenuhi, keluarkan sebuah baris berisi -1. Contoh Masukan 1 Subsoal Contoh Keluaran

36 Contoh Masukan 2 Subsoal Contoh Keluaran 2-1 Penjelasan Pada contoh masukan 1, cara terbaik adalah Pak Dengklek membawa baju-baju nomor 1, 2, dan 5. Dengan demikian, total beratnya adalah = 9 (tidak melebihi 10), banyaknya warna berbeda adalah 2 (warna 1 dan 4), dan total daya tahan adalah = 14 hari. Pembagian Subsoal Pada semua subsoal, berlaku: 1 P B i D i 100 Subsoal 1 (9 poin) Hanya terdapat sebuah kasus uji, yang dapat diunduh di sini. Subsoal 2 (9 poin) Hanya terdapat sebuah kasus uji, yang dapat diunduh di sini. Subsoal 3 (11 poin) 1 N 16 Untuk setiap i, W i = i Q = 0 Subsoal 4 (17 poin) 1 N 100 Untuk setiap i, W i = i Q = 0 9

37 Subsoal 5 (23 poin) 1 N 100 Untuk setiap i, W i = i 0 Q N Subsoal 6 (31 poin) 1 N W i N 0 Q N 10

38 Deskripsi Pabrik Kue Batas Waktu 3 detik Batas Memori 64 MB Pak Dengklek memulai usaha produksi kue. Untuk itu, ia membeli 100 mesin pembuat kue. Setiap mesin memproduksi satu jenis kue yang unik. Karena keterbatasan tempat, seluruh mesin disimpan pada sebuah gudang. Sedangkan kegiatan produksi dilakukan pada sebuah ruang di pabrik kecilnya yang hanya bisa menampung maksimum 10 mesin berbeda setiap harinya. Setiap pagi Pak Dengklek membuat daftar jenis-jenis kue yang akan diproduksi hari itu agar pegawainya dapat memindahkan mesin-mesin tersebut dari gudang ke ruang produksi. Setiap siang, pelanggan-pelanggan datang hendak membeli kue. Setiap jenis kue hanya boleh dibeli oleh maksimum satu pelanggan. Apabila kue yang diinginkan tidak tersedia, pelanggan akan pulang dengan tangan kosong. Karena bukan peramal, Pak Dengklek tidak mengetahui kue-kue mana saja yang akan dipesan pelanggan pada siang harinya ketika membuat daftar di pagi hari. Tentu saja, Pak Dengklek ingin agar banyaknya pelanggan yang berhasil membeli kue sebanyak mungkin. Pak Dengklek menyimpulkan bahwa terdapat pola probabilitas pada pemesanan tiap jenis kue. Untuk masing-masing jenis kue i, terdapat barisan probabilitas p[i,0], p[i,1],..., p[i,k i - 1]. Barisan ini menyatakan bahwa pada hari ke-t, kue jenis i dipesan dengan probabilitas p[i, t mod K i ]. Nilai K i ini bisa berbeda antara satu jenis kue dengan jenis kue lainnya. Akan tetapi, Pak Dengklek tidak mengetahui nilai dari barisan p[i,j] maupun K i. Ia hanya mengetahui bahwa 1 K i 20, dan 0 p[i,j] 1 untuk sembarang i dan j. Petunjuk:Berdasarkan fakta ini, Pak Dengklek menyimpulkan bahwa ketika ia sudah memiliki cukup banyak data pemesanan yang pernah terjadi, ia dapat memperkirakan pola pemesanan (p[i,j] dan K i ). Perkiraan ini cenderung membaik ketika banyaknya data pemesanan yang ia miliki semakin bertambah, yakni ketika nilai t membesar. Anda sebagai programmer baru di pabrik Pak Dengklek ditugasi untuk membuat sebuah program untuk membantu Pak Dengklek membuat daftar mesin yang harus disiapkan setiap pagi. Upah yang Anda terima ditentukan oleh kinerja program Anda selama T hari berturutturut, dan besarnya adalah dengan a adalah total banyaknya pelanggan yang berhasil membeli kue dan b adalah total banyak maksimum pelanggan yang mungkin berhasil membeli kue, selama T hari tersebut. Operator pembagian di sini adalah operator pembagian bilangan riil. Format Interaksi Soal ini adalah soal interaktif. 11

39 Pada awalnya, program Anda harus membaca string "Subsoal X" dengan X menyatakan nomor subsoal dari kasus uji yang sedang diujikan. Berikutnya program Anda membaca sebuah baris berisi sebuah bilangan bulat T yang menyatakan banyaknya hari. Kemudian sebanyak T kali, program Anda berinteraksi dengan program juri. Pada interaksi ke-i, program Anda: 1. Mengeluarkan sebuah bilangan bulat N (0 N 10) ke standar keluaran pada sebuah baris, yang menyatakan banyaknya mesin kue pada daftar mesin Pak Dengklek. Kemudian mengeluarkan N bilangan bulat berbeda yang masing-masing menyatakan nomor jenis kue yang mesinnya akan digunakan di hari itu. Karena Pak Dengklek hanya memiliki satu mesin untuk memproduksi setiap jenis kue, tidak boleh ada dua jenis mesin yang sama pada daftar ini. 2. Membaca sebuah bilangan bulat M (0 M 100) dari standar masukan pada sebuah baris, yang menyatakan banyaknya pelanggan yang melakukan pemesanan kue pada hari ke-i. Kemudian diikuti dengan membaca M buah bilangan bulat berbeda terpisah baris baru pada sebuah baris, yang masing-masing berupa salah satu bilangan antara 1 hingga 100 yang menyatakan jenis kue yang dibeli pada hari tersebut. Kue-kue diurutkan secara menaik berdasarkan jenisnya. Contoh Interaksi Keluaran Program Peserta (interaksi selesai) Keluaran Program Juri Subsoal Penjelasan Contoh Kasus Uji Terdapat 2 kali interaksi. Pada pagi hari pertama, Pak Dengklek mendaftarkan mesin-mesin untuk memproduksi kuekue berjenis 1, 50, dan 2. Pada siang harinya, terdapat 2 pelanggan kue, berjenis 100 dan 50. Kue berjenis 100 sedang tidak diproduksi sedangkan kue berjenis 50 sedang diproduksi di hari ini. Pada pagi hari kedua, Pak Dengklek mendaftarkan mesin-mesin untuk memproduksi kue-kue berjenis 5 dan 3. Pada siang harinya, terdapat 2 pelanggan kue, berjenis 1 dan 50. Kedua kue 12

40 tidak diproduksi di hari ini. Pada kasus contoh ini, banyak kue yang berhasil dijual ke pelanggan adalah 1. Sedangkan banyak maksimum kue yang mungkin berhasil dijual adalah 4. Sehingga nilai Anda adalah: Pembagian Subsoal Terdapat 25 subsoal. Pada semua subsoal berlaku: Hanya terdapat sebuah kasus uji. Dijamin program juri menentukan kue-kue mana saja yang dibeli pada setiap harinya tanpa dipengaruhi oleh keluaran program peserta. T = Nilai Anda pada soal ini adalah rata-rata upah yang Anda peroleh pada semua kasus uji kemudian ditambah setengah lalu dibulatkan ke bawah. Dengan skema penilaian seperti ini, nilai Anda berada dalam rentang Untuk membantu Anda memahami interaksi, disediakan game yang dapat diakses di sini. Kasus uji yang diberikan pada game ini hanyalah untuk visualisasi dan tidak termasuk dalam penilaian seperti pada game di soal interaktif sebelumnya. Catatan Yang perlu diperhatikan adalah bahwa untuk tipe soal interaktif seperti ini, Anda harus selalu memberikan perintah "fflush(stdout);" (bagi pengguna C/C++) atau "flush(output);" (bagi pengguna PASCAL) setiap kali Anda mencetak keluaran (dengan kata lain, setiap kali ada perintah mencetak keluaran misalnya write, writeln, printf, cout, atau puts, tepat di bawahnya harus ada perintah fflush/flush). Sebagai contoh, berikut adalah contoh source code dalam bahasa Pascal yang melakukan pengisian gudang tanpa memperdulikan pesanan para bebek. var subsoal: string; T, M, i, j, pesanan: longint; begin readln(subsoal); readln(t); for i := 1 to T do 13

41 begin writeln(3); writeln(1); writeln(50); writeln(2); flush(output); readln(m); for j := 1 to M do readln(pesanan); end; end. Dan berikut adalah contoh source code dalam bahasa C++. #include <cstdio> #include <cstring> char subsoal[100]; int nomor; int T, M, i, j, pesanan; int main() scanf("%s %d", subsoal, &nomor); scanf("%d", &T); for(i = 1; i <= T; i++) printf("%d\n%d\n%d\n%d\n", 3, 1, 50, 2); fflush(stdout); scanf("%d", &M); for(j = 1; j <= M; j++) scanf("%d", &pesanan); 14

42 return 0; Peringatan Apabila program Anda melakukan salah satu dari hal-hal di bawah ini: mengeluarkan keluaran tidak sesuai format sehingga tidak dikenali oleh grader, atau mengeluarkan keluaran tidak sesuai batasan yang tertera di soal maka program Anda akan dihentikan secara otomatis dan Anda tidak memperoleh nilai pada kasus uji yang bersangkutan. 15

43 Hak Cipta Dilindungi Undang-undang SOLUSI UJIAN OLIMPIADE SAINS NASIONAL 2013 CALON PESERTA INTERNATIONAL OLYMPIAD IN INFORMATICS (IOI) 2014 HARI KE-2 INFORMATIKA Waktu : 5 jam KEMENTERIAN PENDIDIKAN DAN KEBUDAYAAN DIREKTORAT JENDERAL PENDIDIKAN MENENGAH DIREKTORAT PEMBINAAN SEKOLAH MENENGAH ATAS TAHUN 2013

44 Mengosongkan Matriks Batas Waktu: 1 detik Batas Memori: 32 MB #include <cstdio> #include <cstdlib> #include <cstring> #include <algorithm> using namespace std; int i,j,n,m,ctr,minim,maxim,ans; int a[30][30]; int halo1[300007],halo2[300007],halo3[300007]; char s[1007]; bool sama; void proses(int com, int x, int y) int i,j,yow; if (com == 1) ans++; halo1[ans] = 1; halo2[ans] = x; halo3[ans] = y; for (i=1 ; i<=n ; i++) a[i][x] = (a[i][x] + y) % ; if (com == 2) ans++; halo1[ans] = 2; halo2[ans] = x; halo3[ans] = y; for (i=1 ; i<=n ; i++) a[i][x] = (a[i][x] - y) % ; if (com == 3) ans++; halo1[ans] = 3; halo2[ans] = x; halo3[ans] = y; yow = 1; for (i=1 ; i<=y ; i++) yow = ((long long)yow * 2) % ; for (j=1 ; j<=m ; j++) a[x][j] = ((long long)a[x][j] * yow) % ; /* printf("%d %d %d\n",halo1[ans],halo2[ans],halo3[ans]); for (i=1 ; i<=n ; i++) for (j=1 ; j<=m ; j++) printf(" %d",a[i][j]); printf("\n"); // scanf("%d",&yow); */ int main() gets(s); scanf("%d%d",&n,&m); for (i=1 ; i<=n ; i++) for (j=1 ; j<=m ; j++) scanf("%d",&a[i][j]); Solusi Hari-2-1

45 for (j=1 ; j<=m ; j++) //printf("kolom = %d\n",j); sama = true; minim = a[1][j]; maxim = a[1][j]; for (i=1 ; i<=n ; i++) if (a[i][j]!= a[1][j]) sama = false; //printf("%d %d\n",i,j); minim = min(minim,a[i][j]); maxim = max(maxim,a[i][j]); //printf("%d\n",sama); while (!sama) while (minim == 0) proses(1,j,1); minim = a[1][j]; maxim = a[1][j]; for (i=1 ; i<=n ; i++) minim = min(minim,a[i][j]); maxim = max(maxim,a[i][j]); for (i=1 ; i<=n ; i++) minim = a[1][j]; maxim = a[1][j]; int k; for (k=1 ; k<=n ; k++) minim = min(minim,a[k][j]); maxim = max(maxim,a[k][j]); ctr = 0; while (a[i][j] * (1 << (ctr+1)) <= maxim) ctr++; if (ctr!= 0) proses(3,i,ctr); sama = true; for (i=1 ; i<=n ; i++) if (a[i][j]!= a[1][j]) sama = false; if (!sama) minim = a[1][j]; maxim = a[1][j]; for (i=1 ; i<=n ; i++) minim = min(minim,a[i][j]); maxim = max(maxim,a[i][j]); proses(2,j,minim-1); if (a[1][j]!= 0) proses(2,j,a[1][j]); Solusi Hari-2-2

46 printf("%d\n",ans); for (i=1 ; i<=ans ; i++) printf("%d %d %d\n",halo1[i],halo2[i],halo3[i]); Solusi Hari-2-3

47 Kontes Menari Batas Waktu: 2 detik Batas Memori: 32MB #include <cmath> #include <cstdio> #include <cstdlib> #include <cstring> #include <cassert> #include <climits> #include <vector> #include <string> #include <utility> #include <iostream> #include <algorithm> using namespace std; #define REP(i,n) for (int i = 0, _n = (int)n; i < _n; i++) #define FOR(i,a,b) for (int i = (int)a, _b = (int)b; i <= _b; i++) #define RESET(c,v) memset(c, v, sizeof(c)) #define FOREACH(i,c) for (typeof((c).end()) i = (c).begin(); i!= (c).end(); ++i) typedef long long ll; #define pb push_back #define mp make_pair const int MAX = 15; int N, R, Y, J; int K[MAX]; char T[MAX][5]; bool used[max]; int cur[max]; int cnt[100002]; void go(int r) if (r == R) int res = 0; int add = 0; REP(i, R) int val = K[cur[i]]; if (i && T[cur[i-1]][0] == 'P') val *= 2; if (i && T[cur[i-1]][0] == 'L') val /= 2; res += val + add; if (T[cur[i]][0] == 'Y') add = Y; cnt[res]++; Solusi Hari-2-4

48 return; REP(i, N) if (!used[i]) cur[r] = i; used[i] = true; go(r+1); used[i] = false; int main() scanf("%*s%*d"); scanf("%d%d%d%d", &N, &R, &Y, &J); REP(i, N) scanf("%d%s", &K[i], T[i]); go(0); for (int i = ; i >= 0; i--) cnt[i] += cnt[i+1]; REP(i, J) int h; scanf("%d", &h); printf("%d\n", cnt[h+1]); Solusi Hari-2-5

49 Cuti Liburan Batas Waktu: 2 detik Batas Memori: 32MB #include <cmath> #include <cstdio> #include <cstdlib> #include <cstring> #include <cassert> #include <climits> #include <vector> #include <string> #include <utility> #include <iostream> #include <algorithm> using namespace std; #define REP(i,n) for (int i = 0, _n = (int)n; i < _n; i++) #define FOR(i,a,b) for (int i = (int)a, _b = (int)b; i <= _b; i++) #define RESET(c,v) memset(c, v, sizeof(c)) #define FOREACH(i,c) for (typeof((c).end()) i = (c).begin(); i!= (c).end(); ++i) typedef long long ll; #define pb push_back #define mp make_pair const int MAX = 100, INF = ; int N, P, Q; int B[MAX], D[MAX], W[MAX]; int dp[max][505+1][max+1][2]; int DP(int i, int berat, int warna, int sudah) if (i == N) return warna >= Q? 0 : -INF; if (i && W[i]!= W[i-1] && sudah) return DP(i, berat, warna, 0); if (dp[i][berat][warna][sudah] == -1) dp[i][berat][warna][sudah] = DP(i+1, berat, warna, sudah); if (berat + B[i] <= P) dp[i][berat][warna][sudah] = max(dp[i][berat][warna][sudah], D[i] + DP(i+1, berat + B[i], warna sudah, 1)); return dp[i][berat][warna][sudah]; int main() scanf("%*s%*d"); scanf("%d%d%d", &N, &P, &Q); REP(i, N) Solusi Hari-2-6

50 scanf("%d%d%d", &B[i], &D[i], &W[i]); REP(i, N) REP(j, N-1) if (W[j] > W[j+1]) swap(b[j], B[j+1]); swap(d[j], D[j+1]); swap(w[j], W[j+1]); RESET(dp, -1); int res = DP(0, 0, 0, 0); printf("%d\n", res < 0? -1 : res); Solusi Hari-2-7

51 Pabrik Kue Batas Waktu: 3 detik Batas Memori: 64MB #include <cstdio> #include <iostream> #include <algorithm> #include <string> #include <cstring> #include <cstdlib> #include <cmath> #include <memory.h> #include <cassert> #define MP make_pair #define PII pair<int,int> #define RESET(c,x) memset(c, x, sizeof(c)) using namespace std; char dummy[100]; // algorithm parameters #define CHECKINGPERIOD 10 #define STOPCHECKING 400 #define NCAKE 100 #define NSELCACHE 10 #define MINK 1 #define MAXK 20 #define MAXT 1000 #define F first #define S second #define oo int binary[ncake + 5][MAXT + 5]; int freq[ncake + 5][MAXT + 5]; PII sorted[ncake + 5]; pair <double, int> sortedp[ncake + 5]; int T; int K[NCAKE + 5]; double P[NCAKE + 5][MAXK + 5]; int ctr[maxt + 5]; template <class T> inline T ABS(T x) if (x < 0) return -x; return x; int main() // read subsoal gets(dummy); scanf("%d", &T); RESET(freq, 0); RESET(binary, 0); Solusi Hari-2-8

52 for (int t1 = 0; t1 < T; t1++) if (t1 <= STOPCHECKING) // check periods for (int i = 0; i < NCAKE; i++) int mn = oo; for (int k = MINK; k <= MAXK; k++) int fault = 0; for (int t = k; t < t1; t++) if (ABS(freq[i][t] - freq[i][t - k]) == 1) fault++; if (fault < mn) mn = fault; K[i] = k; //predict P for (int i = 0; i < NCAKE; i++) for (int k = 0; k < K[i]; k++) ctr[k] = 0; P[i][k] = 0; for (int t = 0; t <= t1; t++) P[i][t % K[i]] += 1.0 * freq[i][t]; ctr[t % K[i]]++; for (int k = 0; k < K[i]; k++) P[i][k] /= ctr[k]; for (int i = 0; i < NCAKE; i++) sortedp[i] = MP(P[i][t1 % K[i]], i); sort(sortedp, sortedp + NCAKE); reverse(sortedp, sortedp + NCAKE); printf("%d\n", NSELCACHE); for (int i = 0; i < NSELCACHE; i++) printf("%d\n", sortedp[i].s + 1); fflush(stdout); // UPDATE BINARY int norders; scanf("%d", &norders); for (int i = 0; i < norders; i++) int x; scanf("%d", &x); x--; binary[x][t1] = 1; // Update freq and fr2 for (int i = 0; i < NCAKE; i++) if (t1 > 0) Solusi Hari-2-9

53 freq[i][t1] = freq[i][t1-1]; freq[i][t1] += binary[i][t1]; if (t1 >= 1) freq[i][t1] -= binary[i][t1-1]; /* for (int i = 0; i < NCAKE; i++) printf("[%d %d] : ", i + 1, K[i]); for (int t = 0; t < K[i]; t++) printf("%.2lf ", P[i][t]); */ printf("\n"); return 0; Solusi Hari-2-10

54 Hak Cipta Dilindungi Undang-undang SOAL UJIAN OLIMPIADE SAINS NASIONAL 2013 CALON PESERTA INTERNATIONAL OLYMPIAD IN INFORMATICS (IOI) 2014 SESI LATIHAN INFORMATIKA Waktu : 5 jam KEMENTERIAN PENDIDIKAN DAN KEBUDAYAAN DIREKTORAT JENDERAL PENDIDIKAN MENENGAH DIREKTORAT PEMBINAAN SEKOLAH MENENGAH ATAS TAHUN 2013

55 Menimbang & Mengurutkan Batas Waktu: 1 detik Batas Memori: 32 MB Deskripsi Pak Dengklek memiliki N ekor bebek yang dikumpulkan di sebuah kandang yang besar. Bebek-bebek tersebut dinomori 1 sampai dengan N. Uniknya, berat dari bebek-bebek tersebut berbeda-beda; yakni, tidak ada dua bebek dengan berat yang sama persis. Namun, sampai saat ini Pak Dengklek tidak tahu berat masing-masing bebeknya. Ia ingin memisahkan bebek-bebek tersebut ke dalam N buah kandang baru yang dijejerkan dari kiri ke kanan. Satu kandang berisi satu bebek. Ia juga ingin agar bebek di kandang paling kiri adalah bebek teringan, bebek di kandang kedua terkiri adalah bebek teringan kedua, dan seterusnya sampai bebek di kandang paling kanan adalah bebek terberat. Tentunya, untuk melakukan hal tersebut, Pak Dengklek harus menimbang bebek-bebeknya. Namun, ia hanya memiliki sebuah timbangan dua lengan. Untuk menggunakan timbangan tersebut, Pak Dengklek harus meletakkan seekor bebek pada masing-masing lengan. Kemudian, timbangan tersebut akan memberi tahu bebek pada lengan mana yang lebih ringan. Karena timbangan tersebut sudah agak usang, Pak Dengklek hanya bisa melakukan penimbangan paling banyak K kali. Bantulah Pak Dengklek menimbang bebek-bebeknya sedemikian sehingga ia dapat menempatkan bebek-bebeknya pada kandang baru yang sesuai. Format Interaksi Soal ini adalah soal interaktif. Pada awalnya, program Anda harus membaca string "Subsoal X" dengan X menyatakan nomor subsoal dari kasus uji yang sedang diujikan. Berikutnya program Anda dapat membaca dua buah bilangan bulat N dan K. Kemudian, sebanyak maksimum K kali, Anda dapat mengeluarkan perintah dalam sebuah baris dengan format: timbang B 1 B 2 yang artinya Anda menaruh bebek nomor B 1 pada lengan kiri neraca dan bebek nomor B 2 pada lengan kanan neraca. Untuk melakukan perintah ini, harus berlaku 1 B 1, B 2 N dan B 1 B 2. Setelah itu, program Anda dapat membaca sebuah bilangan -1 atau 1. Bilangan -1 menandakan bahwa bebek B 1 lebih ringan daripada bebek B 2, sedangkan 1 menandakan sebaliknya. Anda juga dapat mengeluarkan perintah dalam sebuah baris dengan format: jawab B 1 B 2... B N yang artinya Anda sudah mengetahui semua urutan relatif bebek-bebek dan Anda memutuskan bahwa bebek nomor B i adalah bebek teringan ke-i. Setelah itu, interaksi akan otomatis dihentikan. Jika urutan yang Anda tebak memang sesuai dengan urutan bebek yang sebenarnya, Anda akan dinyatakan benar untuk kasus uji tersebut. Namun jika tebakan Anda 1

KEMENTERIAN PENDIDIKAN DAN KEBUDAYAAN

KEMENTERIAN PENDIDIKAN DAN KEBUDAYAAN Hak Cipta Dilindungi Undang-undang SOLUSI UJIAN OLIMPIADE SAINS NASIONAL 2013 CALON PESERTA INTERNATIONAL OLYMPIAD IN INFORMATICS (IOI) 2014 HARI KE-2 INFORMATIKA Waktu : 5 jam KEMENTERIAN PENDIDIKAN DAN

Lebih terperinci

KEMENTERIAN PENDIDIKAN DAN KEBUDAYAAN

KEMENTERIAN PENDIDIKAN DAN KEBUDAYAAN Hak Cipta Dilindungi Undang-undang SOLUSI UJIAN OLIMPIADE SAINS NASIONAL 2013 CALON PESERTA INTERNATIONAL OLYMPIAD IN INFORMATICS (IOI) 2014 HARI KE-1 INFORMATIKA Waktu : 5 jam KEMENTERIAN PENDIDIKAN DAN

Lebih terperinci

KEMENTERIAN PENDIDIKAN DAN KEBUDAYAAN

KEMENTERIAN PENDIDIKAN DAN KEBUDAYAAN Hak Cipta Dilindungi Undang-undang SOAL UJIAN OLIMPIADE SAINS NASIONAL 2013 CALON PESERTA INTERNATIONAL OLYMPIAD IN INFORMATICS (IOI) 2014 HARI KE-1 INFORMATIKA Waktu : 5 jam KEMENTERIAN PENDIDIKAN DAN

Lebih terperinci

KEMENTERIAN PENDIDIKAN DAN KEBUDAYAAN

KEMENTERIAN PENDIDIKAN DAN KEBUDAYAAN Hak Cipta Dilindungi Undang-undang SOAL UJIAN OLIMPIADE SAINS NASIONAL 2013 CALON PESERTA INTERNATIONAL OLYMPIAD IN INFORMATICS (IOI) 2014 HARI KE-2 INFORMATIKA Waktu : 5 jam KEMENTERIAN PENDIDIKAN DAN

Lebih terperinci

KEMENTERIAN PENDIDIKAN DAN KEBUDAYAAN

KEMENTERIAN PENDIDIKAN DAN KEBUDAYAAN Dapatkan soal-soal lainnya di http://forum.pelatihan-osn.com Hak Cipta Dilindungi Undang-undang SOAL UJIAN OLIMPIADE SAINS NASIONAL 2013 CALON PESERTA INTERNATIONAL OLYMPIAD IN INFORMATICS (IOI) 2014 HARI

Lebih terperinci

KEMENTERIAN PENDIDIKAN DAN KEBUDAYAAN

KEMENTERIAN PENDIDIKAN DAN KEBUDAYAAN Hak Cipta Dilindungi Undang-undang SOAL UJIAN OLIMPIADE SAINS NASIONAL 2013 CALON PESERTA INTERNATIONAL OLYMPIAD IN INFORMATICS (IOI) 2014 SESI LATIHAN INFORMATIKA Waktu : 5 jam KEMENTERIAN PENDIDIKAN

Lebih terperinci

OLIMPIADE SAINS NASIONAL 2015 DESKRIPSI SOAL

OLIMPIADE SAINS NASIONAL 2015 DESKRIPSI SOAL Hak Cipta Dilindungi Undang-undang OLIMPIADE SAINS NASIONAL 2015 DESKRIPSI SOAL INFORMATIKA/KOMPUTER SESI 1 Waktu: 5 Jam Daftar Soal: A. Pertahanan Yogya B. Menyiram Sawah C. Bisa Jadi Teebak Angka Pertahanan

Lebih terperinci

OLIMPIADE SAINS NASIONAL 2015 DESKRIPSI SOAL

OLIMPIADE SAINS NASIONAL 2015 DESKRIPSI SOAL Hak Cipta Dilindungi Undang-undang OLIMPIADE SAINS NASIONAL 2015 DESKRIPSI SOAL INFORMATIKA/KOMPUTER SESI 2 Waktu: 5 Jam Daftar Soal: A. Belanja di Malioboro B. Motif Batik C. Ayam Aneh Belanja di Malioboro

Lebih terperinci

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

Sang Pelompat. Batas Waktu 1 detik. Batas Memori 64 MB Sang Pelompat Batas Waktu 1 detik Batas Memori 64 MB Deskripsi Kwik adalah bebek Pak Dengklek yang senang menonton TV. Salah satu film favoritnya adalah serial The Indiana Duck. Serial ini mengisahkan

Lebih terperinci

Olimpiade Sains Nasional XI Bidang Komputer/Informatika

Olimpiade Sains Nasional XI Bidang Komputer/Informatika Berkas Kompetisi Soal Hari 2 Olimpiade Sains Nasional XI Bidang Komputer/Informatika 2-7 September 2012, Jakarta www.tokilearning.org www.siswapsma.org BARISAN BILANGAN Batas Waktu Batas Memori 1 detik

Lebih terperinci

Pertahanan Pekanbaru. Deskripsi. Format Masukan. Time limit: 1 s. Memory limit: 64 MB

Pertahanan Pekanbaru. Deskripsi. Format Masukan. Time limit: 1 s. Memory limit: 64 MB Pertahanan Pekanbaru Time limit: 1 s Memory limit: 64 MB Deskripsi Pak Dengklek baru saja mendapatkan informasi bahwa sebuah makhluk jahat tengah menyusun rencana untuk menaklukkan Pekanbaru! Pak Dengklek

Lebih terperinci

Cat Rumah. Batas Memori 256 MB

Cat Rumah. Batas Memori 256 MB Cat Rumah Batas Waktu 1 detik Batas Memori 256 MB Deskripsi Hari ini Pak Dengklek ingin mengecat rumahnya dengan warna favorit bebek-bebeknya. Karena Pak Dengklek hanya memiliki kaleng-kaleng cat dengan

Lebih terperinci

OSN 2013 Bidang Informatika. Pembahasan Soal

OSN 2013 Bidang Informatika. Pembahasan Soal Pembahasan Soal Menggelindingkan Kubus Penulis soal: Derianto Kusuma Soal ini merupakan masalah shortest path pada graf implicit, dengan simpul-simpulnya (node/vertex) adalah konfigurasi-konfigurasi dari

Lebih terperinci

OLIMPIADE SAINS NASIONAL 2015 DESKRIPSI SOAL

OLIMPIADE SAINS NASIONAL 2015 DESKRIPSI SOAL Hak Cipta Dilindungi Undang-undang OLIMPIADE SAINS NASIONAL 2015 DESKRIPSI SOAL INFORMATIKA/KOMPUTER SESI 0 Waktu: 2 Jam Daftar Soal: A. Tekotek B. Sengketa Tanah C. Menimbang Tekotek Time limit: 1000

Lebih terperinci

OLIMPIADE SAINS NASIONAL IX

OLIMPIADE SAINS NASIONAL IX SOAL SESI 3 OLIMPIADE SAINS NASIONAL IX BIDANG INFORMATIKA 4 AGUSTUS 2010 MEDAN, SUMATERA UTARA Selamat Bekerja, Berkompetisi, Jadilah Yang Terbaik! Shuffle Kode soal: osn1013.pas/c/ CPP Batas Run-time:

Lebih terperinci

OLIMPIADE SAINS NASIONAL 2015 DESKRIPSI SOAL DAN KUNCI JAWABAN

OLIMPIADE SAINS NASIONAL 2015 DESKRIPSI SOAL DAN KUNCI JAWABAN Hak Cipta Dilindungi Undang-undang OLIMPIADE SAINS NASIONAL 2015 DESKRIPSI SOAL DAN KUNCI JAWABAN INFORMATIKA/KOMPUTER Soal Sesi 0: 0A Tekotek 0B Sengketa Tanah 0C Menimbang Halaman 2 dari 64 Tekotek Time

Lebih terperinci

Olimpiade Sains Nasional XI Bidang Komputer/Informatika

Olimpiade Sains Nasional XI Bidang Komputer/Informatika Berkas Kompetisi Soal Hari 1 Olimpiade Sains Nasional XI Bidang Komputer/Informatika 2-7 September 2012, Jakarta www.tokilearning.org www.siswapsma.org Bundel Soal Hari 1 OSN XI Bidang Informatika SEGITIGA

Lebih terperinci

Bundel Soal Sesi 2 Bidang Informatika Olimpiade Sains Nasional X

Bundel Soal Sesi 2 Bidang Informatika Olimpiade Sains Nasional X Bundel Soal Sesi 2 Bidang Informatika Olimpiade Sains Nasional X Manado - Sulawesi Utara - 13 September 2011 Anda dilarang membuka dan membaca isi bundel soal ini sebelum dipersilakan oleh juri. Bundel

Lebih terperinci

OLIMPIADE SAINS NASIONAL VII

OLIMPIADE SAINS NASIONAL VII SOAL SESI 2 OLIMPIADE SAINS NASIONAL VII BIDANG INFORMATIKA 10 AGUSTUS 2008 MAKASSAR, SULAWESI SELATAN Selamat Bekerja, Berkompetisi, Jadilah Yang Terbaik! Kartu 1 Nama Program: kartu1.pas / C / CPP Pak

Lebih terperinci

INFORMATIKA/KOMPUTER. Hari 0 (Sesi Latihan) 1. Empek-empek 2. Gunting Kertas 3. Matriks Biner

INFORMATIKA/KOMPUTER. Hari 0 (Sesi Latihan) 1. Empek-empek 2. Gunting Kertas 3. Matriks Biner Hak Cipta Dilindungi Undang-undang OLIMPIADE SAINS NASIONAL 2016 DESKRIPSI SOAL INFORMATIKA/KOMPUTER Hari 0 (Sesi Latihan) 1. Empek-empek 2. Gunting Kertas 3. Matriks Biner Waktu: 2 Jam Hari 0 / Soal 1

Lebih terperinci

OLIMPIADE SAINS NASIONAL VIII

OLIMPIADE SAINS NASIONAL VIII SOAL SESI 2 OLIMPIADE SAINS NASIONAL VIII BIDANG INFORMATIKA 5 AGUSTUS 2009 DKI JAKARTA Selamat Bekerja, Berkompetisi, Jadilah Yang Terbaik! Soal 1: Kuadrat Sempurna Nama Program: kuadrat.pas / C / CPP

Lebih terperinci

Nama Soal Peta Jalan Batas Waktu - Nama Berkas peta[no.urut].out.[1..10] Batas Memori - Tipe output only Sumber Prima Chairunnanda

Nama Soal Peta Jalan Batas Waktu - Nama Berkas peta[no.urut].out.[1..10] Batas Memori - Tipe output only Sumber Prima Chairunnanda Nama Soal Peta Jalan Batas Waktu - Nama Berkas peta[no.urut].out.[1..10] Batas Memori - Tipe output only Sumber Prima Chairunnanda Pada suatu hari Pak Ganesh ingin pergi ke kota untuk membeli barang keperluan

Lebih terperinci

INFORMATIKA/KOMPUTER. Hari Pasar 16 Ilir 2. Menjinakkan Bom 3. Pos Wisata Sungai

INFORMATIKA/KOMPUTER. Hari Pasar 16 Ilir 2. Menjinakkan Bom 3. Pos Wisata Sungai Hak Cipta Dilindungi Undang-undang OLIMPIADE SAINS NASIONAL 2016 DESKRIPSI SOAL INFORMATIKA/KOMPUTER Hari 1 1. Pasar 16 Ilir 2. Menjinakkan Bom 3. Pos Wisata Sungai Waktu: 5 Jam Hari 1 / Soal 1 - Pasar

Lebih terperinci

BAB III Pengenalan Tipe Data dan Bahasa Pemrograman C/C++

BAB III Pengenalan Tipe Data dan Bahasa Pemrograman C/C++ BAB III Pengenalan Tipe Data dan Bahasa Pemrograman C/C++ Pendahuluan Pada bab ini dileaskan tipe data dan operasi baca tulis data, juga dijelaskan struktur pemrograman pada bahasa C/C++ Penyajian 31 Tipe

Lebih terperinci

OLIMPIADE SAINS NASIONAL 2015 DESKRIPSI SOAL

OLIMPIADE SAINS NASIONAL 2015 DESKRIPSI SOAL Dapatkan soal-soal lainnya di https://forum.pelatihan-osn.com Hak Cipta Dilindungi Undang-undang OLIMPIADE SAINS NASIONAL 2015 DESKRIPSI SOAL INFORMATIKA/KOMPUTER SESI 0 Waktu: 2 Jam Daftar Soal: A. Tekotek

Lebih terperinci

PRAKTIKUM 2. perubah (variabel), konstanta, fungsi, atau obyek lain yang didefinisikan oleh

PRAKTIKUM 2. perubah (variabel), konstanta, fungsi, atau obyek lain yang didefinisikan oleh PRAKTIKUM 2 1. Variabel Pengenal (identifier) merupakan nama yang biasa digunakan untuk suatu perubah (variabel), konstanta, fungsi, atau obyek lain yang didefinisikan oleh pemrogram. Variabel adalah suatu

Lebih terperinci

INFORMATIKA/KOMPUTER. Hari 0 (Sesi Latihan) 1. Empek-empek 2. Gunting Kertas 3. Matriks Biner

INFORMATIKA/KOMPUTER. Hari 0 (Sesi Latihan) 1. Empek-empek 2. Gunting Kertas 3. Matriks Biner Hak Cipta Dilindungi Undang-undang OLIMPIADE SAINS NASIONAL 2016 DESKRIPSI SOAL INFORMATIKA/KOMPUTER Hari 0 (Sesi Latihan) 1. Empek-empek 2. Gunting Kertas 3. Matriks Biner Waktu: 2 Jam Hari 0 / Soal 1

Lebih terperinci

Algoritma dan Pemrograman. Loop control structures: WHILE. Loop control structures: WHILE Perhatikan potongan program berikut: 12/29/2011

Algoritma dan Pemrograman. Loop control structures: WHILE. Loop control structures: WHILE Perhatikan potongan program berikut: 12/29/2011 Algoritma dan Pemrograman WHILE while (kondisi) statement; FALSE kondisi? TRUE statement Pernyataan (statements) di dalam struktur WHILE akan diproses minimum NOL kali. Mengapa? WHILE Perhatikan potongan

Lebih terperinci

A. Segiempat Terluas

A. Segiempat Terluas A. Segiempat Terluas 1 detik Pak Chanek senang sekali dengan pelajaran geometri sewaktu masa kecil dulu. Sekarang, Pak Chanek memiliki seutas tali sepanjang L (1 L 1.000) meter. Isengiseng, ia ingin membuat

Lebih terperinci

Hari 2 1. Robot Pempek 2. Belanja Suvenir 3. Wisata Palembang

Hari 2 1. Robot Pempek 2. Belanja Suvenir 3. Wisata Palembang Hak Cipta Dilindungi Undang-undang OLIMPIADE SAINS NASIONAL 2016 DESKRIPSI SOAL INFORMATIKA/KOMPUTER Hari 2 1. Robot Pempek 2. Belanja Suvenir 3. Wisata Palembang Waktu: 5 Jam Hari 2/Soal 1 Robot Pempek

Lebih terperinci

Hari 1 / Soal 1: Bukit dan Lembah

Hari 1 / Soal 1: Bukit dan Lembah Hari 1 / Soal 1: Bukit dan Lembah Kode Soal: bukit Batas Run-time: 1 detik / test-case Batas Memori: 1 MB : Standard input : Standard output Deskripsi Diberikan data ketinggian yang di catat dalam perjalanan

Lebih terperinci

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

Pembahasan Soal Olimpiade Sains Nasional 2004 Bidang Informatika Pekanbaru, Agustus 2004 Pembahasan Soal Olimpiade Sains Nasional 2004 Bidang Informatika Pekanbaru, 23-27 Agustus 2004 Soal 1. Membuka String Terlipat Penulis: Ilham Kurnia Nama Program: LIPAT2.PAS / C / CPP Batas Run-time: 0.1

Lebih terperinci

OLIMPIADE SAINS NASIONAL IX

OLIMPIADE SAINS NASIONAL IX SOAL SESI 2 OLIMPIADE SAINS NASIONAL IX BIDANG INFORMATIKA AGUSTUS 2010 MEDAN, SUMATERA UTARA Selamat Bekerja, Berkompetisi, Jadilah Yang Terbaik! Melukis Kode soal: osn1005.pas/c/ CPP Buatlah sebuah program

Lebih terperinci

Pemrograman I Bab III Tipe Data, Variabel, dan Operasi Perhitungan. Adam Mukharil Bachtiar, S.Kom. Universitas Komputer Indonesia

Pemrograman I Bab III Tipe Data, Variabel, dan Operasi Perhitungan. Adam Mukharil Bachtiar, S.Kom. Universitas Komputer Indonesia Pemrograman I Bab III Tipe Data, Variabel, dan Operasi Perhitungan Adam Mukharil Bachtiar, S.Kom. Universitas Komputer Indonesia Tipe Data 1. Tipe data karakter 2. Tipe data bilangan bulat 3. Tipe data

Lebih terperinci

Pengumuman Pekan ke- 5

Pengumuman Pekan ke- 5 Pengumuman Pekan ke- 5 Batas skor minimum di Kontes PR untuk UTSP adalah 1000 Ingat bahwa soal nomor 5 dianulir Masih akan ada sekitar 5 soal lagi di akhir pekan untuk topik perulangan Kecurangan jawaban

Lebih terperinci

VARIABEL & TIPE DATA PEMROGRAMAN C++

VARIABEL & TIPE DATA PEMROGRAMAN C++ VARIABEL & TIPE DATA PEMROGRAMAN C++ ruliriki@gmail.com VARIABEL Suatu nama yang menyatakan tempat dalam memori komputer Menyimpan nilai yang dapat diubah VARIABEL Pengenal (identifier) yang digunakan

Lebih terperinci

OLIMPIADE SAINS NASIONAL VIII

OLIMPIADE SAINS NASIONAL VIII SOAL SESI 3 OLIMPIADE SAINS NASIONAL VIII BIDANG INFORMATIKA 6 AGUSTUS 2009 DKI JAKARTA Selamat Bekerja, Berkompetisi, Jadilah Yang Terbaik! Lagu Nama Program: lagu.pas / C / CPP Batas Run time: 1 detik

Lebih terperinci

Struktur Kontrol Perulangan (Loop) Algoritme dan Pemrograman. Struktur Kontrol Perulangan: while. Struktur Kontrol Perulangan: while

Struktur Kontrol Perulangan (Loop) Algoritme dan Pemrograman. Struktur Kontrol Perulangan: while. Struktur Kontrol Perulangan: while Algoritme dan Pemrograman Kuliah #4 Struktur kontrol perulangan: while, do while, for Struktur Kontrol Perulangan (Loop) Program akan mengulang satu atau lebih pernyataan berdasarkan kondisi tertentu.

Lebih terperinci

Minggu III STRUKTUR PEMILIHAN (KONTROL PROGRAM)

Minggu III STRUKTUR PEMILIHAN (KONTROL PROGRAM) Minggu III STRUKTUR PEMILIHAN (KONTROL PROGRAM) Motivasi Dalam kehidupan sehari-hari selalu diperlukan pemilihan dari beberapa alternatif Contoh : Terdapat beberapa alternatif untuk memilih sabun mandi

Lebih terperinci

BAGIAN A. PILIHAN GANDA Silanglah jawaban yang benar pada lembar jawaban. Jawaban benar bernilai 3, salah atau kosong bernilai 0.

BAGIAN A. PILIHAN GANDA Silanglah jawaban yang benar pada lembar jawaban. Jawaban benar bernilai 3, salah atau kosong bernilai 0. NIM: Jadwal kuliah: A 1/6 UJIAN TENGAH SEMESTER GANJIL 2012-2013 ALGORITME DAN PEMROGRAMAN SELASA, 30 OKTOBER 2012 15.30-17.30 Ketentuan Ujian: 1. Ujian bersifat Catatan Tertutup 2. Jawaban dituliskan

Lebih terperinci

Penerapan Divide and Conquer dalam Membandingkan Alur Proses 2 Source Code

Penerapan Divide and Conquer dalam Membandingkan Alur Proses 2 Source Code Penerapan Divide and Conquer dalam Membandingkan Alur Proses 2 Source Code Gregorius Ronny Kaluge / 13508019 Program Studi Teknik Informatika Sekolah Teknik Elektro dan Informatika Institut Teknologi Bandung,

Lebih terperinci

OLIMPIADE SAINS NASIONAL VII

OLIMPIADE SAINS NASIONAL VII SOAL SESI 1 OLIMPIADE SAINS NASIONAL VII BIDANG INFORMATIKA 10 AGUSTUS 2008 MAKASSAR, SULAWESI SELATAN Selamat Bekerja, Berkompetisi, Jadilah Yang Terbaik! OSN2008: Olimpiade Sain Nasional 2008 Pilihan

Lebih terperinci

INF-103 Pemrograman II VECTOR & STRING. Dr. Taufik Fuadi Abidin, M.Tech Irvanizam Zamanhuri, M.Sc. Program Studi Informatika FMIPA UNIVERSITAS KUALA

INF-103 Pemrograman II VECTOR & STRING. Dr. Taufik Fuadi Abidin, M.Tech Irvanizam Zamanhuri, M.Sc. Program Studi Informatika FMIPA UNIVERSITAS KUALA INF-103 Pemrograman II VECTOR & STRING Dr. Taufik Fuadi Abidin, M.Tech Irvanizam Zamanhuri, M.Sc Program Studi Informatika FMIPA UNIVERSITAS KUALA http://www.informatika.unsyiah.ac.id Apa itu Vector? Vector

Lebih terperinci

Algoritme dan Pemrograman

Algoritme dan Pemrograman Loop control structures Algoritme dan Pemrograman Kuliah #5 Compound statement Kontrol Program :, DO.., FOR Program akan mengulang satu atau lebih statement untuk diproses atau tidak diproses berdasarkan

Lebih terperinci

Bundel Soal Sesi 3 Bidang Informatika Olimpiade Sains Nasional X

Bundel Soal Sesi 3 Bidang Informatika Olimpiade Sains Nasional X Bundel Soal Sesi 3 Bidang Informatika Olimpiade Sains Nasional X Manado - Sulawesi Utara - September 0 Anda dilarang membuka dan membaca isi bundel soal ini sebelum dipersilakan oleh juri. Bundel soal

Lebih terperinci

Berkas Soal Final Competitive Programming Tingkat SMA. CompFest Kontributor: Irwan Mulyawan Ricky Suryadharma Verdiyanto Saputra William Gozali

Berkas Soal Final Competitive Programming Tingkat SMA. CompFest Kontributor: Irwan Mulyawan Ricky Suryadharma Verdiyanto Saputra William Gozali Berkas Soal Final Competitive Programming Tingkat SMA CompFest 2013 Kontributor: Irwan Mulyawan Ricky Suryadharma Verdiyanto Saputra William Gozali 1 A. Laser Ajaib Batas Waktu: 2 detik Batas Memori: 32

Lebih terperinci

Olimpiade Sains Nasional 2015 Bidang Informatika. Pembahasan

Olimpiade Sains Nasional 2015 Bidang Informatika. Pembahasan Olimpiade Sains Nasional 2015 Bidang Informatika Pembahasan Scientific Committee OSN 2015 Catatan Scientific Committee Scientific Committee OSN 2015 kali ini terdiri atas: Ahmad Zaky, IMO 2010-2012 Christian

Lebih terperinci

Pengantar Pemrograman Dengan C++

Pengantar Pemrograman Dengan C++ Pengantar Pemrograman Dengan C++ Pengantar Apa itu program? Bagaimanakah membuatnya? Jika sudah dibuat, apakah gunanya? Mungkin itu adalah pertanyaan pertanyaan dari orang orang yang baru saja mengenal

Lebih terperinci

UJIAN TENGAH SEMESTER GANJIL TAHUN STMIK AMIKOM YOGYAKARTA

UJIAN TENGAH SEMESTER GANJIL TAHUN STMIK AMIKOM YOGYAKARTA UJIAN TENGAH SEMESTER GANJIL TAHUN 2012 2013 STMIK AMIKOM YOGYAKARTA Mata Ujian : Algoritma dan Pemrograman Kelas : 12-S1TI-12 s/d 14 Sifat : Open Book (Close Laptop) Jurusan : S1 Teknik Informatika Hari

Lebih terperinci

BAGIAN A. PILIHAN GANDA Silanglah Jawaban yang Benar Pada Lembar Jawaban. Jawaban benar bernilai 3, salah atau kosong bernilai 0.

BAGIAN A. PILIHAN GANDA Silanglah Jawaban yang Benar Pada Lembar Jawaban. Jawaban benar bernilai 3, salah atau kosong bernilai 0. UJIAN TENGAH SEMESTER GANJIL 2010-2011 ALGORITME DAN PEMROGRAMAN SABTU, 30-10-10 08.00-10.00 Ketentuan Ujian: 1. Ujian bersifat Catatan Tertutup 2. Jawaban dituliskan pada lembar jawaban yang disediakan

Lebih terperinci

Programmer dan Meeting

Programmer dan Meeting Programmer dan Meeting Description Time limit Memory limit 3 second 128 MB Perusahaan-perusahaan software di Silicon Valley sudah cukup kenal dengan prinsip bahwa meeting adalah musuh seorang programmer.

Lebih terperinci

Olimpiade Sains Nasional XI Bidang Komputer/Informatika

Olimpiade Sains Nasional XI Bidang Komputer/Informatika Berkas Kompetisi Soal Hari 1 Olimpiade Sains Nasional XI Bidang Komputer/Informatika 2-7 September 2012, Jakarta www.tokilearning.org www.siswapsma.org SEGITIGA Batas Waktu Batas Memori 1 detik 64 MB Anda

Lebih terperinci

Chapter 3.2 : Tipe, Nama dan Nilai

Chapter 3.2 : Tipe, Nama dan Nilai Mata Kuliah : Logika dan Algoritma / 4 SKS Chapter 3.2 : Tipe, Nama dan Nilai Dosen Pengasuh : Fatoni, M.M.,M.Kom. Mail : fatoni@binadarma.ac.id/toniubd@yahoo.com Materi Yang Dipelajari Tipe Data Dasar

Lebih terperinci

TIPE, NAMA, DAN NILAI

TIPE, NAMA, DAN NILAI TIPE, NAMA, DAN NILAI Dian Palupi Rini, M.Kom Tipe Dasar Bilangan Logika Nama Tipe adalah boolean (diambil dari nama matematikawan Inggris George Boole). Ranah Nilai : true (benar) dan false (salah). Konstanta

Lebih terperinci

1 WARMING UP National Programming Contest Schematics 2009

1 WARMING UP National Programming Contest Schematics 2009 1 WARMING UP National Programming Contest Schematics 009 1. Perkalian (Lagi) Time Limit : s Perkalian merupakan salah satu dasar dalam perhitungan matematika. Bajol baru saja mendapat PR dari gurunya untuk

Lebih terperinci

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

a[0] a[1] a[2] a[3] a[4] a[5] x Array Algoritme dan Pemrograman Kuliah #8 Array Dalam matematika dikenal variabel berindeks x 0, x 1, x 2,, x n-1. Angka 0, 1, 2,, n-1 pada variabel x disebut sebagai indeks atau subscript. Variabel berindeks

Lebih terperinci

OLIMPIADE SAINS NASIONAL VII

OLIMPIADE SAINS NASIONAL VII SOAL SESI OLIMPIADE SAINS NASIONAL VII BIDANG INFORMATIKA 11 AGUSTUS 2008 MAKASSAR, SULAWESI SELATAN Selamat Bekerja, Berkompetisi, Jadilah Yang Terbaik! Bola dan Gelas Nama Program: bola.pas / C / CPP

Lebih terperinci

BIDANG INFORMATIKA/KOMPUTER

BIDANG INFORMATIKA/KOMPUTER BIDANG INFORMATIKA/KOMPUTER 50 Soal untuk dikerjakan Selama 150 menit (2½ jam) Peserta hanya dibolehkan membawa tanda pengenal, alat tulis dan penghapus saat memasuki ruang ujian. Bagian Informasi Model

Lebih terperinci

Faktorial. Kode Soal: OSN601 Batas Run-time: 1 detik / test-case Batas Memori: 32 MB Masukan: Standard input Keluaran: Standard output

Faktorial. Kode Soal: OSN601 Batas Run-time: 1 detik / test-case Batas Memori: 32 MB Masukan: Standard input Keluaran: Standard output Faktorial Kode Soal: OSN601 Batas Run-time: 1 detik / test-case Batas Memori: 32 MB Masukan: Standard input Keluaran: Standard output Diberikan sebuah bilangan N, N! disebut N faktorial dan nilainya dihitung

Lebih terperinci

Bundel Soal Sesi 1 Bidang Informatika Olimpiade Sains Nasional X

Bundel Soal Sesi 1 Bidang Informatika Olimpiade Sains Nasional X Bundel Soal Sesi 1 Bidang Informatika Olimpiade Sains Nasional X Manado - Sulawesi Utara - 13 September 2011 Anda dilarang membuka dan membaca isi bundel soal ini sebelum dipersilakan oleh juri. Bundel

Lebih terperinci

OLIMPIADE SAINS NASIONAL VII

OLIMPIADE SAINS NASIONAL VII SOAL SESI 1 OLIMPIADE SAINS NASIONAL VII BIDANG INFORMATIKA 10 AGUSTUS 2008 MAKASSAR, SULAWESI SELATAN Selamat Bekerja, Berkompetisi, Jadilah Yang Terbaik! OSN2008: Olimpiade Sain Nasional 2008 Pilihan

Lebih terperinci

Algoritma + Pemrograman Pascal

Algoritma + Pemrograman Pascal March 22, 2013 Berat Bebek Soal (OSN IX) Setiap bulan, Posyanbedu (Pos Pelayanan Bebek Terpadu) unit Pak Dengklek mengadakan penimbangan badan rutin untuk mengetahui kondisi kesehatan umum bebek-bebek

Lebih terperinci

Aplikasi Rekursif dalam Analisis Sintaks Program

Aplikasi Rekursif dalam Analisis Sintaks Program Aplikasi Rekursif dalam Analisis Sintaks Program Albertus Kelvin / 13514100 Program Studi Teknik Informatika Sekolah Teknik Elektro dan Informatika Institut Teknologi Bandung, Jl. Ganesha 10 Bandung 40132,

Lebih terperinci

Berkas Soal Penyisihan Competitive Programming Tingkat Mahasiswa. CompFest 2013

Berkas Soal Penyisihan Competitive Programming Tingkat Mahasiswa. CompFest 2013 Berkas Soal Penyisihan Competitive Programming Tingkat Mahasiswa CompFest 2013 Kontributor: Alham Fikri Aji Cakra Wishnu Wardhana Kemal Maulana Kurniawan William Gozali 1 Panggilan Akrab Batas Waktu: 2

Lebih terperinci

Algoritme dan Pemrograman

Algoritme dan Pemrograman Algoritme dan Pemrograman Kuliah #9 Pointer Alamat dan Pointer Address (alamat) Tiap variabel memiliki dua atribut: alamat (address) dan nilai (value). Alamat adalah lokasi dalam memori komputer. Lokasi

Lebih terperinci

REVIEW ARRAY. Institut Teknologi Sumatera

REVIEW ARRAY. Institut Teknologi Sumatera REVIEW ARRAY DASAR PEMROGRAMAN Institut Teknologi Sumatera TUJUAN PERKULIAHAN Mahasiswa mengingat kembali konsep dan cara kerja array Mahasiswa mampu membuat program menggunakan array PRE TEST Tuliskan,

Lebih terperinci

Algoritme dan Pemrograman

Algoritme dan Pemrograman Algoritme dan Pemrograman Kuliah #7 dan #8 Array Program Menghitung Rataan 3 Nilai #include int nilai1, nilai2, nilai3; float rataan; void main() printf ( Masukkan nilai 1 );scanf( %d,&nilai1);

Lebih terperinci

Problem A Divisible compfest1.c / compfest1.cpp / compfest1.pas Runtime-limit: 0.5 detik Memory-limit: 64 MB

Problem A Divisible compfest1.c / compfest1.cpp / compfest1.pas Runtime-limit: 0.5 detik Memory-limit: 64 MB Problem A Divisible compfest.c / compfest.cpp / compfest.pas Runtime-limit: 0.5 detik Barisan bilangan Fibonacci didefinisikan secara rekursif sebagai berikut: Buatlah sebuah program yang menentukan apakah

Lebih terperinci

Struktur Data Array. Rijal Fadilah S.Si

Struktur Data Array. Rijal Fadilah S.Si Struktur Data Array Rijal Fadilah S.Si Array Berdimensi Satu Array Satu dimensi tidak lain adalah kumpulan elemen-elemen identik yang tersusun dalam satu baris. Elemen-elemen tersebut memiliki tipe data

Lebih terperinci

Achmad Solichin.

Achmad Solichin. Pemrograman Bahasa C dengan Turbo C Sh-001@plasa.com Lisensi Dokumen: Seluruh dokumen di IlmuKomputer.Com dapat digunakan, dimodifikasi dan disebarkan secara bebas untuk tujuan bukan komersial (nonprofit),

Lebih terperinci

Berkas Soal Final Competitive Programming Tingkat Mahasiswa. CompFest 2013

Berkas Soal Final Competitive Programming Tingkat Mahasiswa. CompFest 2013 Berkas Soal Final Competitive Programming Tingkat Mahasiswa CompFest 2013 Kontributor: Alham Fikri Aji Cakra Wishnu Wardhana Gede Wahyu Adi Pramana Irvan Jahja Muhammad Febrian Ramadhana William Gozali

Lebih terperinci

Perulangan, Percabangan, dan Studi Kasus

Perulangan, Percabangan, dan Studi Kasus Perulangan, Percabangan, dan Studi Kasus Perulangan dan percabangan merupakan hal yang sangat penting dalam menyusun suatu program Pada pertemuan kali ini akan dibahas secara detail tentang perulangan

Lebih terperinci

Tipe Data dan Variabel. Dosen Pengampu Muhammad Zidny Naf an, M.Kom

Tipe Data dan Variabel. Dosen Pengampu Muhammad Zidny Naf an, M.Kom Tipe Data dan Variabel Dosen Pengampu Muhammad Zidny Naf an, M.Kom Format Pseudocode Lengkap Judul program/algoritma PROGRAM Euclidean Program untuk mencari GCD dari dua buah bilangan bulat positif m dan

Lebih terperinci

PEMROGRAMAN BERORIENTASI OBJEK. Tipe Data. Budhi Irawan, S.Si, M.T

PEMROGRAMAN BERORIENTASI OBJEK. Tipe Data. Budhi Irawan, S.Si, M.T PEMROGRAMAN BERORIENTASI OBJEK Tipe Data Budhi Irawan, S.Si, M.T TIPE DATA Tipe Data berfungsi untuk merepresentasikan jenis dari nilai yang terdapat dalam program. Contoh apabila mempunyai suatu data

Lebih terperinci

P3 Dasar Struktur Data TIF42/SIF42

P3 Dasar Struktur Data TIF42/SIF42 P3 Dasar Struktur Data TIF42/SIF42 A. Sidiq P. Prodi teknik Informatika & Prodi Sistem Informasi Fakultas Teknologi Informasi Universitas Mercu Buana Yogyakarta Pembahasan Struktur Data Primitif Struct

Lebih terperinci

Angka Tebak. Batas Waktu 1 detik. Batas Memori 32 MB

Angka Tebak. Batas Waktu 1 detik. Batas Memori 32 MB OSN 2014 Hari 0 Angka Tebak Batas Waktu 1 detik Batas Memori 32 MB Deskripsi Semoga Anda masih ingat soal Tebak Angka di mana Anda diharuskan menebak angka yang dipikirkan Pak Dengklek (dari rentang 1

Lebih terperinci

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

Pengantar dalam Bahasa Pemrograman Turbo Pascal Tonny Hidayat, S.Kom Pengantar dalam Bahasa Pemrograman Turbo Pascal Tonny Hidayat, S.Kom Pengantar Bahasa Pemrograman Pascal Page 1 / 11 Pengenalan Pascal Pascal merupakan salah satu bahasa pemrograman tingkat tinggi. Pemrograman

Lebih terperinci

Bagi peserta OSN 2014 dan calon peserta Open OSN William Gozali, Teknis OSN

Bagi peserta OSN 2014 dan calon peserta Open OSN William Gozali, Teknis OSN Bagi peserta OSN 2014 dan calon peserta Open OSN 2014 William Gozali, Teknis OSN 2014 1 Dokumen ini ditujukan ke semua calon peserta OSN, agar memahami : Persiapan yang seharusnya dilakukan dalam menghadapi

Lebih terperinci

Problem A. 3 Prima. Kasus #1: 2 Kasus #2: 1 Kasus #3: 135 Kasus #4: 20

Problem A. 3 Prima. Kasus #1: 2 Kasus #2: 1 Kasus #3: 135 Kasus #4: 20 Problem A 3 Prima Seperti yang telah anda ketahui tentunya, bilangan prima adalah bilangan bulat positif yang memiliki tepat dua pembagi, yaitu 1 dan bilangan itu sendiri. Lima bilangan prima paling kecil

Lebih terperinci

Spesifikasi: Ukuran: 14x21 cm Tebal: 225 hlm Harga: Rp Terbit pertama: Februari 2005 Sinopsis singkat:

Spesifikasi: Ukuran: 14x21 cm Tebal: 225 hlm Harga: Rp Terbit pertama: Februari 2005 Sinopsis singkat: Spesifikasi: Ukuran: 14x21 cm Tebal: 225 hlm Harga: Rp 32.800 Terbit pertama: Februari 2005 Sinopsis singkat: Struktur data merupakan salah satu ilmu fundamental untuk mempelajari pemrograman. Mahasiswa

Lebih terperinci

Algoritma & Pemrograman 1. Muhamad Nursalman Pendilkom/Ilkom Universitas Pendidikan Indonesia

Algoritma & Pemrograman 1. Muhamad Nursalman Pendilkom/Ilkom Universitas Pendidikan Indonesia Algoritma & Pemrograman 1 Muhamad Nursalman Pendilkom/Ilkom Universitas Pendidikan Indonesia Daftar Isi 1. Bab 1 Pengantar & Dasar Dasar Algoritma 2. Bab 2 Aturan Penulisan Teks Algoritma 3. Bab 3 Tipe,

Lebih terperinci

MODUL PRAKTIKUM ALGORITMA DAN STRUKTUR DATA PERTEMUAN 1

MODUL PRAKTIKUM ALGORITMA DAN STRUKTUR DATA PERTEMUAN 1 MODUL PRAKTIKUM ALGORITMA DAN STRUKTUR DATA PERTEMUAN 1 Disusun oleh : Tim Asisten JURUSAN TEKNIK INFORMATIKA FAKULTAS SAINS DAN TEKNOLOGI UNIVERSITAS ISLAM NEGERI SUNAN KALIJAGA YOGYAKARTA 2011 0 A. Pengantar

Lebih terperinci

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

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

Lebih terperinci

Dasar-dasar C/C++ Ekohariadi FT Unesa

Dasar-dasar C/C++ Ekohariadi FT Unesa Dasar-dasar C/C++ Ekohariadi FT Unesa Program Modular Program yang baik dibuat dengan filosofi rancangan seperti membuat bangunan yang baik. Ia bergantung pada perencaaan yang cermat. Program yang terstruktur

Lebih terperinci

Final Programming Competition (Mahasiswa)

Final Programming Competition (Mahasiswa) Programming Competition Final (Mahasiswa) 14 Oktober 2012 10:00 15:00 Penulis Soal: Ashar Fuadi (TOKI 2009 2010) Berty Chrismartin L T (TOKI 2010) traveloka.com (Derianto Kusuma, TOKI 2002 2004) Febry

Lebih terperinci

Bundel Soal Sesi 1 Bidang Informatika Olimpiade Sains Nasional X

Bundel Soal Sesi 1 Bidang Informatika Olimpiade Sains Nasional X Bundel Soal Sesi 1 Bidang Informatika Olimpiade Sains Nasional X Manado - Sulawesi Utara - 13 September 2011 Anda dilarang membuka dan membaca isi bundel soal ini sebelum dipersilakan oleh juri. Bundel

Lebih terperinci

Penghasilan JokeMart

Penghasilan JokeMart Penghasilan JokeMart Time limit: 1 s Memory limit: 32 MB Deskripsi Joke adalah seorang mahasiswa di suatu institut terkenal di Surabaya. Joke memiliki harapan untuk lulus 3,5 tahun. Oleh karena itu Joke

Lebih terperinci

Algoritme dan Pemrograman

Algoritme dan Pemrograman Algoritme dan Pemrograman Kuliah #8 Array Program Menghitung Rataan 3 Nilai int nilai1, nilai2, nilai3; float rataan; int main() { printf ("Masukkan nilai 1 :");scanf("%d",&nilai1); printf ("Masukkan nilai

Lebih terperinci

Algoritme dan Pemrograman

Algoritme dan Pemrograman Algoritme dan Pemrograman Searching (Pencarian) Sorting (Pengurutan) Tipe struct Searching (pencarian) Mencari data berdasarkan nilai tertentu, x. Beberapa contoh algoritme pencarian: Sequential search

Lebih terperinci

Dasar-dasar Pemrograman C DASAR PEMROGRAMAN & ALGORITMA

Dasar-dasar Pemrograman C DASAR PEMROGRAMAN & ALGORITMA Dasar-dasar Pemrograman C DASAR PEMROGRAMAN & ALGORITMA TUJUAN Menjelaskan tentang beberapa tipe data dasar Menjelaskan tentang Variabel Menjelaskan tentang konstanta Menjelaskan tentang berbagai jenis

Lebih terperinci

Tipe Data, Identifier, Operator dan Control Statement

Tipe Data, Identifier, Operator dan Control Statement Kurikulum Qt { Basic OOP } Chapter 2 Tipe Data, Identifier, Operator dan Control Statement. Agenda Tipe data dan identifier Tipe data bahasa C++ Variabel dan Konstanta Statement Operator dan Ekspresi Control

Lebih terperinci

# FOUR LOOPING. JAWABAN 1. #include <stdio.h> #include <conio.h> #define pi void main(){

# FOUR LOOPING. JAWABAN 1. #include <stdio.h> #include <conio.h> #define pi void main(){ HANDOUT ALGORITMA PEMROGRAMAN DAN STRUKTUR DATA 1 PRODI SISTEM INFORMASI UKDW # FOUR LOOPING Soal-soal minggu lalu: 1. Buatlah program untuk menghitung luas segitiga dan luas lingkaran (gunakan konstanta

Lebih terperinci

Bab 9 Pointer. 9.1 Pendeklarasian pointer

Bab 9 Pointer. 9.1 Pendeklarasian pointer Bab 9 Pointer 9.1 Pendeklarasian pointer Pointer adalah variabel yang menyimpan alamat memori dari variabel yang lain. Pointer juga memiliki tipe seperti halnya variabel biasa. Pointer dideklarasikan dengan

Lebih terperinci

JENIS DATA SEDERHANA & INPUT/OUTPUT DATA

JENIS DATA SEDERHANA & INPUT/OUTPUT DATA JENIS DATA SEDERHANA & INPUT/OUTPUT DATA 1.1 Tipe Data A. Data Tipe Sederhana Dihubungkan dengan sebuah identifier untuk sebuah data. Data tipe ini digolongkan menjadi tipe data standar dan tipe data yang

Lebih terperinci

Turbo C adalah tool yang dipakai untuk membuat code program dalam bahasa C ataupun C++. Berikut adalah jendela utama Turbo C

Turbo C adalah tool yang dipakai untuk membuat code program dalam bahasa C ataupun C++. Berikut adalah jendela utama Turbo C 1. Pendahuluan Lingkungan Turbo C++ 4.5 Turbo C++ 4.5 adalah tool yang dipakai untuk membuat code program dalam bahasa C ataupun C++. Berikut adalah jendela utama Turbo C++ 4.5. 1 2 3 4 1 : Menu Utama

Lebih terperinci

TINGGI KANDANG SUSUN

TINGGI KANDANG SUSUN TINGGI KANDANG SUSUN Kode Soal : SUSUN.PAS Batas Run-time : 1 detik / testcase Batas Memori : 3 MB Masukan : Standard Input Keluaran : Standard Output Selain bebek, Pak Dengklek berkeinginan memelihara

Lebih terperinci

Chapter 1 KONSEP DASAR C

Chapter 1 KONSEP DASAR C Chapter 1 KONSEP DASAR C Sejarah Dan Standar C Akar dari bahasa C adalah BCPL (dikembangkan oleh Martin Richard tahun 1967). Kemudian Tahun 1970, Ken Thompson mengembangkan bahasa tersebut yang di kenal

Lebih terperinci

Latihan & Kisi-kisi UTS DASAR PEMROGRAMAN

Latihan & Kisi-kisi UTS DASAR PEMROGRAMAN Latihan & Kisi-kisi UTS DASAR PEMROGRAMAN 2 MATERI UTS ALGORITMA & FLOWCHART DASAR PEMROGRAMAN DALAM C PENGAMBILAN KEPUTUSAN PERULANGAN FUNGSI 3 Contoh :Algoritma Mencari akar bulat positif dari bilangan

Lebih terperinci

Tipe Data dan Operator

Tipe Data dan Operator Tipe Data dan Operator Dasar Algoritma dan Pemrogrman Eka Maulana, ST, MT, MEng. Klasifikasi Tipe Data 1 Tipe Data Tipe data adalah jenis data yang dapat diolah oleh komputer untuk memenuhi kebutuhan dalam

Lebih terperinci

BAB IV PENGULANGAN PROSES

BAB IV PENGULANGAN PROSES BAB IV PENGULANGAN PROSES Tujuan : 1. Menjelaskan proses pengulangan menggunakan pernyataan for 2. Menjelaskan proses pengulangan menggunakan pernyataan while 3. Menjelaskan proses pengulangan menggunakan

Lebih terperinci