题库练习 Armchairs
← 上一题 下一题 →

A14353 | Armchairs

时间限制1s
内存限制256MB
通过 / 提交0/0

题目描述

There are $n$ armchairs, numbered from $1$ to $n$ from left to right. Some armchairs are occupied by people (at most one person per armchair), others are not. The number of occupied armchairs is not greater than $\frac{n}{2}$ .

For some reason, you would like to tell people to move from their armchairs to some other ones. If the $i$ -th armchair is occupied by someone and the $j$ -th armchair is not, you can tell the person sitting in the $i$ -th armchair to move to the $j$ -th armchair. The time it takes a person to move from the $i$ -th armchair to the $j$ -th one is $|i - j|$ minutes. You may perform this operation any number of times, but these operations must be done sequentially, i. e. you cannot tell a person to move until the person you asked to move in the last operation has finished moving to their destination armchair.

You want to achieve the following situation: every seat that was initially occupied must be free. What is the minimum time you need to do it?

输入格式

The first line contains one integer $n$ ( $2 \le n \le 5000$ ) — the number of armchairs.

The second line contains $n$ integers $a_1, a_2, \dots, a_n$ ( $0 \le a_i \le 1$ ). $a_i = 1$ means that the $i$ -th armchair is initially occupied, $a_i = 0$ means that it is initially free. The number of occupied armchairs is at most $\frac{n}{2}$ .

输出格式

Print one integer — the minimum number of minutes you have to spend to achieve the following situation: every seat that was initially occupied must be free.

输入输出样例

输入 #1
7
1 0 0 1 0 0 1
输出 #1
3
输入 #2
6
1 1 1 0 0 0
输出 #2
9
输入 #3
5
0 0 0 0 0
输出 #3
0
C++ 编辑器
输入
输出