kartu2.pas


Kartu 2
Nama Program : kartu2.PAS / C / CPP
Batas Run-time : 1 detik / test-case
Batas Memori : 16 MB
Nama Berkas Masukan : Standard input (keyboard)
Nama Berkas Keluaran : Standard output (layar)

Pak Dengklek kembali bermain dengan kartu ayam-bebeknya. Pada permainan ini, Pak Dengklek menggabungkan beberapa set kartu ayam bebek, mengocoknya, dan kemudian meletakkannya dalam posisi tumpukan tertutup. Permainan dimainkan oleh n orang pemain, yang diberi nomor urut mulai dari 1 hingga n. Pemain pertama akan memulai permainan dengan mengambil kartu dari tumpukan secara terus menerus hingga kartu yang diambil terahir memiliki banyak gambar yang lebih sedikit dibanding kartu yang diambil sebelumnya (tanpa mempedulikan jenis gambar pada kartu). Kartu setelah kartu terakhir yang diambil pemain pertama akan menjadi kartu pertama pemain kedua, dan seterusnya. Permainan berhenti ketika tumpukan kartu habis atau semua pemain telah mendapatkan gilirannya 1 kali (tergantung kondisi mana yang terpenuhi lebih dahulu).
Diberikan n (1 = n = 100000) orang pemain dan tumpukan k (1 = k = 100000) kartu, tentukan banyaknya kartu yang didapat pemain pertama pada akhir permainan.
Perlu diingat, kartu ayam-bebek merupakan kartu bergambar 1 hingga 9 ekor ayam atau bebek yang dinyatakan dengan pasangan angka-huruf XY dengan X menyatakan banyaknya gambar dan Y menyatakan jenis gambar (A = ayam dan B = bebek).

FORMAT MASUKAN
Baris pertama: banyaknya pemain, n.

Baris kedua: banyaknya kartu dalam tumpukan, k.

Baris ke-3..k+2: deskripsi tiap kartu pada tumpukan, mulai dari kartu paling atas.

FORMAT KELUARAN
Sebuah bilangan bulat yang menyatakan banyaknya kartu yang didapat oleh pemain pertama.

CONTOH MASUKAN
2
10
4A
5A
6B
6A
6A
5B
1A
1B
2B
3B

CONTOH KELUARAN
6

Program kartu2.pas :

PROGRAM KARTU2;
USES CRT;
type
larik = array [1..100000] of string[2];
larik2 = array [1..100000] of integer;
VAR
JPemain, JKartu, i,j,k : Integer;
Kartu : larik;
JKP : larik2;
kar,kar0 : integer;
Begin
write ('Jumlah Pemain : ');readln(JPemain);
write ('Jumlah Kartu : ');readln(JKartu);
for i :=1 to JKartu DO
begin
write ('Kartu ');write(i);write(' : '); readln(Kartu[i]);
end;
i := 1;
j := 1;
k := 1;
kar0 := 0;
kar :=0;
while (j <= JKartu) AND (i <= JPemain) Do
begin
kar0 := kar;
val ( copy (Kartu[j],1,1),kar);
if kar = kar0-1 then
begin
JKP[i] := JKP[i]+1;
i := i + 1;
end
else
JKP[i] := JKP[i]+1;
j := j + 1;
end;
write (JKP[1]);
end.

One thought on “kartu2.pas

Tinggalkan Balasan

Isikan data di bawah atau klik salah satu ikon untuk log in:

Logo WordPress.com

You are commenting using your WordPress.com account. Logout / Ubah )

Gambar Twitter

You are commenting using your Twitter account. Logout / Ubah )

Foto Facebook

You are commenting using your Facebook account. Logout / Ubah )

Foto Google+

You are commenting using your Google+ account. Logout / Ubah )

Connecting to %s