D - MaratonIME in the golden moment

简介: D - MaratonIME in the golden moment

Statements

It is a common knowledge the importance in practicing a physical activity, mainly when you take part in ICPC competitions. Keeping this in mind, Giovana Delfino invited her friends from MaratonIME to go rowing.

The initial total ability of the boat is 0. Despite the equal enthusiasm of all members, each friend i has a physical ability h(i). Dear teacher Gabi knows that whenever two friends x and y are together in the boat, the boat's total ability is increased by h(xh(y).

Giovana invited n friends, but rowing is not always possible when you have programming assignments and exams of the great professor Arnaldo Mandel ahead, so sometimes not everyone shows up. However, the teacher Gabi is very optimistic and hopes that, for the final semester competition, all n friends will attend in order to increase MaratonIME odds. Help Gabi find the total ability of the boat in this possible golden moment, assuming all friends show up.

Input

The first line contains one integer n (1 ≤ n ≤ 105) - the number of friends invited to row.

The second line contains n integers h1, h2, ..., hn (1 ≤ hi ≤ 3·104) - the abilities of each member.

Output

Print one integer - the boat's total ability in the golden moment.

Examples

Input

2

5 10


Output

50


Input

4

1 3 7 11


Output

152


Note

In the first example, in the golden moment there will be two members on the boat, then the ability there will be 5 × 10 = 50.

题目大意及思路:给你n个数,让你求第i个数和后面的数的乘积。

反思:直接用的暴力,超时了,最后也没想出来用什么办法。结束后,想了想,可以用一个数组,来存储后面的数的总和,最后的复杂度就低了O(n)

#include <stdio.h>
#include <stdlib.h>
#include <string.h>
struct node
{
    int x;
    long long int s;
} st[100100];
int main()
{
    long long int sum;
    int n, i;
    sum = 0;
    scanf("%d", &n);
    scanf("%d", &st[0].x);
    st[0].s = st[0].x;
    for(i = 1; i < n; i++)
    {
        scanf("%d", &st[i].x);
        st[i].s = st[i].x + st[i-1].s;
    }
    for(i = 0; i < n; i++)
    {
        sum = sum + st[i].x * (st[n-1].s - st[i].s);
    }
    printf("%lld\n", sum);
    return 0;
}


相关文章
|
机器学习/深度学习 人工智能
Educational Codeforces Round 113 (Rated for Div. 2)C. Jury Meeting
Educational Codeforces Round 113 (Rated for Div. 2)C. Jury Meeting
62 0
|
机器学习/深度学习
1257:Knight Moves 2021-01-09
1257:Knight Moves 2021-01-09
LeetCode 407. Trapping Rain Water II
我们把最外面的四边当成四面墙,想象海水面不断的升高,首先会浸过墙面最低的格子,如果墙面最低格子的四周(出了在墙面的格子)有比它矮的格子,那么这就可以形成一个蓄水池,蓄水池的最高高度就是墙面最低的格子,于是我们计算这个蓄水池可以获得的蓄水量;然后这个蓄水池被添加到墙面中;继续在墙面中找最低的格子;
107 0
LeetCode 407. Trapping Rain Water II
|
索引
LeetCode 42 Trapping Rain Water
给定n个非负整数,每个非负整数表示一个宽度为1的柱子,计算下雨后能够捕获多少水.
75 0
LeetCode 42 Trapping Rain Water
|
人工智能
Educational Codeforces Round 98 (Rated for Div. 2)B-Toy Blocks
You are asked to watch your nephew who likes to play with toy blocks in a strange way. He has n boxes and the i-th box has ai blocks. His game consists of two steps: he chooses an arbitrary box i; he tries to move all blocks from the i-th box to other boxes.
270 0