#HT1034. 换板凳

换板凳

题目描述

大厅里有一排共 nn 个板凳,从左到右编号依次为 1,2,,n1,2, \ldots, n。初始时有些板凳上坐着人,有些板凳上没坐人(一个板凳上最多坐一个人)。坐着人的板凳数量不超过 n2\frac{n}{2}

你的任务是让坐在板凳上的所有人都移动到别的板凳上。如果第 ii 个板凳上坐着人,而第 jj 个板凳上没有坐人,则你可以告知坐在第 ii 个板凳上的那个人坐到第 jj 个板凳上。此人从第 ii 个板凳搬到第 jj 个板凳需要耗时 ij|i-j| 分钟(这里 x|x| 表示 xx 的绝对值)。你可以进行这种操作(即将一个人从当前板凳搬到一个空的板凳)任意次,但是这些操作需要依次进行,也就是说:你需要让某一个人完成了从某个凳子搬到一个空的凳子之后,才能让另一人再进行移动位置的操作。本题中,除了移动位置的操作外,其它操作都不计入时间。

你期望达成的效果是:初始所有坐着人的板凳在你的操作之后都不坐着人(即所有的人都移动到了之前是空着的板凳上),当然,也必须每个板凳最多只坐一个人。

求:满足上述条件的情况下最少需要花费的总时间?

输入格式

输入的第一行包含一个整数 n(2n5000)n(2 \le n \le 5000),表示板凳的数量。

输入的第二行包含 nn 个整数,两两之间以一个空格分隔,表示初始时每个凳子的情况。对于第 i(1in)i(1 \le i \le n) 个整数,若其值为 11,则说明初始时第 ii 个板凳上有坐人,若其值为 00,则说明初始时第 ii 个板凳上没有坐人。

输出格式

输出一个整数,表示将所有人都移动到初始时没有坐人的那些板凳上最少需要花费多少分钟。

样例

7
1 0 0 1 0 0 1
3
6
1 1 1 0 0 0
9
5
0 0 0 0 0
0

样例解释

(注:下面均用 aba \rightarrow b 表示将初始坐在第 aa 个板凳上的人移动到第 bb 个板凳上)

  • 样例1中,一种最优的移动方案是:121 \rightarrow 2(花费 11 分钟),454 \rightarrow 5(花费 11 分钟),767 \rightarrow 6(花费 11 分钟);
  • 样例2中,一种最优的移动方案是:141 \rightarrow 4(花费 33 分钟),252 \rightarrow 5(花费 33 分钟),363 \rightarrow 6(花费 33 分钟);
  • 样例3中,不需要移动(因为没有人)。

数据范围

  • 对于 20%20\% 的数据,n5n \le 5
  • 对于 40%40\% 的数据,n50n \le 50
  • 对于 60%60\% 的数据,n500n \le 500
  • 对于 100%100\% 的数据,2n50002 \le n \le 5000