spoj#SERVS. Servers
Servers
Suppose we want to replicate a file over a collection of n servers, labeled S1, S2, ..., Sn. To place a copy of the file at server Si results in a placement cost of ci, for an integer ci > 0. Now, if a user requests the file from server Si, and no copy of the file is present at Si, then the servers Si + 1, Si + 2, Si + 3... are searched in order until a copy of the file is finally found, say at server Sj, where j > i. This results in an access cost of j−i. (Note that the lower-indexed servers Si−1, Si−2, ... are not consulted in this search.) The access cost is 0 if Si holds a copy of the file. We will require that a copy of the file be placed at server Sn, so that all such searches will terminate, at the latest, at Sn.
We’d like to place copies of the files at the servers so as to minimize the sum of placement and access costs. Formally, we say that a configuration is a choice, for each server Si with i = 1, 2, ..., n−1, of whether to place a copy of the file at Si or not. (Recall that a copy is always placed at Sn.) The total cost of a configuration is the sum of all placement costs for servers with a copy of the file, plus the sum of all access costs associated with all n servers.
Write a program which reads from the standard input the placement costs and writes a single number, the minimum cost of a configuration. First line of the input consists of the number n of servers (1 ≤ n ≤ 1000). In the next n lines you are given the placement costs, in line i + 1 you are given the placement cost ci of server Si.
Example
For the input:
4
1
1
1
9
the answer is:
12
and for the input:
4
4
3
2
1
the answer is:
6