CF82D.Two out of Three

普及/提高-

通过率:0%

AC君温馨提醒

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

题目描述

Vasya has recently developed a new algorithm to optimize the reception of customer flow and he considered the following problem.

Let the queue to the cashier contain nn people, at that each of them is characterized by a positive integer aia_{i} — that is the time needed to work with this customer. What is special about this very cashier is that it can serve two customers simultaneously. However, if two customers need aia_{i} and aja_{j} of time to be served, the time needed to work with both of them customers is equal to max(ai,aj)max(a_{i},a_{j}) . Please note that working with customers is an uninterruptable process, and therefore, if two people simultaneously come to the cashier, it means that they begin to be served simultaneously, and will both finish simultaneously (it is possible that one of them will have to wait).

Vasya used in his algorithm an ingenious heuristic — as long as the queue has more than one person waiting, then some two people of the first three standing in front of the queue are sent simultaneously. If the queue has only one customer number ii , then he goes to the cashier, and is served within aia_{i} of time. Note that the total number of phases of serving a customer will always be equal to n/2⌈n/2⌉ .

Vasya thinks that this method will help to cope with the queues we all hate. That's why he asked you to work out a program that will determine the minimum time during which the whole queue will be served using this algorithm.

输入格式

The first line of the input file contains a single number nn ( 1<=n<=10001<=n<=1000 ), which is the number of people in the sequence. The second line contains space-separated integers a1,a2,...,ana_{1},a_{2},...,a_{n} ( 1<=ai<=1061<=a_{i}<=10^{6} ). The people are numbered starting from the cashier to the end of the queue.

输出格式

Print on the first line a single number — the minimum time needed to process all nn people. Then on n/2⌈n/2⌉ lines print the order in which customers will be served. Each line (probably, except for the last one) must contain two numbers separated by a space — the numbers of customers who will be served at the current stage of processing. If nn is odd, then the last line must contain a single number — the number of the last served customer in the queue. The customers are numbered starting from 11 .

输入输出样例

  • 输入#1

    4
    1 2 3 4
    

    输出#1

    6
    1 2
    3 4
    
  • 输入#2

    5
    2 4 3 1 4
    

    输出#2

    8
    1 3
    2 5
    4
    
首页