CF1849D.Array Painting

普及/提高-

通过率:0%

AC君温馨提醒

该题目为【codeforces】题库的题目,您提交的代码将被提交至codeforces进行远程评测,并由ACGO抓取测评结果后进行展示。由于远程测评的测评机由其他平台提供,我们无法保证该服务的稳定性,若提交后无反应,请等待一段时间后再进行重试。

题目描述

You are given an array of nn integers, where each integer is either 00 , 11 , or 22 . Initially, each element of the array is blue.

Your goal is to paint each element of the array red. In order to do so, you can perform operations of two types:

  • pay one coin to choose a blue element and paint it red;
  • choose a red element which is not equal to 00 and a blue element adjacent to it, decrease the chosen red element by 11 , and paint the chosen blue element red.

What is the minimum number of coins you have to spend to achieve your goal?

输入格式

The first line contains one integer nn ( 1n21051 \le n \le 2 \cdot 10^5 ).

The second line contains nn integers a1,a2,,ana_1, a_2, \dots, a_n ( 0ai20 \le a_i \le 2 ).

输出格式

Print one integer — the minimum number of coins you have to spend in order to paint all elements red.

输入输出样例

  • 输入#1

    3
    0 2 0

    输出#1

    1
  • 输入#2

    4
    0 0 1 1

    输出#2

    2
  • 输入#3

    7
    0 1 0 0 1 0 2

    输出#3

    4

说明/提示

In the first example, you can paint all elements red with having to spend only one coin as follows:

  1. paint the 22 -nd element red by spending one coin;
  2. decrease the 22 -nd element by 11 and paint the 11 -st element red;
  3. decrease the 22 -nd element by 11 and paint the 33 -rd element red.

In the second example, you can paint all elements red spending only two coins as follows:

  1. paint the 44 -th element red by spending one coin;
  2. decrease the 44 -th element by 11 and paint the 33 -rd element red;
  3. paint the 11 -st element red by spending one coin;
  4. decrease the 33 -rd element by 11 and paint the 22 -nd element red.
首页