QOJ.ac

QOJ

実行時間制限: 1 s メモリ制限: 64 MB 満点: 20

#23773. Menyusun Batu Go

統計

Deskripsi Masalah

Kita bermain dengan menyusun batu Go berwarna putih dan hitam di atas meja. Pertama, letakkan sebuah batu Go di ujung kiri meja. Selanjutnya, letakkan sebuah batu Go di posisi ke-$2$ dari kiri. Ulangi hal ini sebanyak $n$ kali untuk menyusun $n$ buah batu Go dalam satu barisan mendatar. Namun, saat meletakkan batu Go baru yang ke-$i$, ganti batu-batu Go di atas meja sesuai aturan berikut:

  • Jika $i$ ganjil: Tanpa mengganti batu Go yang sudah ada di atas meja, letakkan batu Go baru pada posisi ke-$i$ dari kiri.
  • Jika $i$ genap: Apabila warna batu Go baru yang diletakkan pada posisi ke-$i$ dari kiri sama dengan warna batu Go paling kanan di atas meja, maka tanpa mengganti batu Go di atas meja, letakkan batu Go baru pada posisi ke-$i$ dari kiri. Jika tidak, yaitu apabila warna batu Go baru yang diletakkan pada posisi ke-$i$ dari kiri berbeda dengan warna batu Go paling kanan di atas meja, pertama-tama ambil semua batu Go berwarna sama yang berurutan di ujung kanan meja, lalu ganti dengan batu-batu Go yang berwarna sama dengan batu Go ke-$i$. Kemudian letakkan batu Go ke-$i$ di ujung kanan meja.

Sebagai contoh, misalkan setelah $7$ batu Go pertama diletakkan, keadaannya adalah:

$$\circ \circ \bullet \bullet \circ \circ \circ$$

(di mana $\circ$ menyatakan batu Go putih dan $\bullet$ menyatakan batu Go hitam).

  • Jika batu Go ke-$8$ berwarna putih ($\circ$), karena warnanya sama dengan batu Go paling kanan, langsung letakkan saja. Dengan demikian, batu-batu Go di atas meja menjadi:

$$\circ \circ \bullet \bullet \circ \circ \circ \circ$$

  • Jika batu Go ke-$8$ berwarna hitam ($\bullet$), karena warnanya berbeda dengan batu Go paling kanan ($\circ$), pertama-tama ambil $3$ batu Go putih ($\circ$) yang berurutan di ujung kanan meja dan ganti dengan batu Go hitam ($\bullet$). Kemudian letakkan batu Go ke-$8$ di ujung kanan. Dengan demikian, batu-batu Go di atas meja menjadi:

$$\circ \circ \bullet \bullet \bullet \bullet \bullet \bullet$$

Diberikan urutan batu Go yang akan diletakkan sebagai masukan, buatlah program untuk mencari banyaknya batu Go putih yang berada di atas meja setelah selesai menyusun $n$ batu Go.

Masukan

Pada baris ke-$1$ tertulis bilangan bulat positif $n$ ($1 \le n \le 100\,000$). Pada baris ke-$2$ dan seterusnya, yaitu pada baris ke-$i+1$ ($1 \le i \le n$), tertulis bilangan bulat $c_{i}$ yang menyatakan warna batu Go yang diletakkan pada urutan ke-$i$, di mana jika $c_{i}$ bernilai $0$ berarti warna batu Go ke-$i$ adalah putih, dan jika bernilai $1$ berarti warna batu Go ke-$i$ adalah hitam.

Dari data penilaian, sebesar $50\%$ dari total poin memenuhi $n \le 10\,000$.

Keluaran

Cetak $1$ baris yang hanya berisi banyaknya batu Go putih di atas meja setelah selesai menyusun $n$ batu Go.

Contoh Masukan dan Keluaran

Contoh Masukan 1

8
1
0
1
1
0
0
0
0

Contoh Keluaran 1

6

Contoh Masukan 2

8
1
0
1
1
0
0
0
1

Contoh Keluaran 2

2

Discussions

About Discussions

The discussion section is only for posting: General Discussions (problem-solving strategies, alternative approaches), and Off-topic conversations.

This is NOT for reporting issues! If you want to report bugs or errors, please use the Issues section below.

Open Discussions 0
No discussions in this category.

Issues

About Issues

If you find any issues with the problem (statement, scoring, time/memory limits, test cases, etc.), you may submit an issue here. A problem moderator will review your issue.

Guidelines:

  1. This is not a place to publish discussions, editorials, or requests to debug your code. Issues are only visible to you and problem moderators.
  2. Do not submit duplicated issues.
  3. Issues must be filed in English or Chinese only.
Active Issues 0
No issues in this category.
Closed/Resolved Issues 0
No issues in this category.