题目描述
你有一个长度为 n 序列 {a}(序列下标从1开始) ,每次可以从任意位置 i 花费 ai*i 的代价来把 ai 删除。
注意,删除后 ai 后面的数会依次向前补上(下标 -1 ) 。
求把整个序列删完的最小代价。
输入描述:
第一行一个整数 n ,第二行 n 个整数代表该序列。
输出描述:
一行一个整数表示删完序列的最小代价。
示例1
输入
2 3 2
输出
5
备注:
1<=n<=10^6,|ai|<=10^7 保证答案在 (-2^64,2^64) 范围内
#include<stdio.h>
#define N 100020
long long a[N];
int main()
{
long long n,sum,i;
sum=0;
scanf("%lld",&n);
for(i=1;i<=n;i++)
scanf("%lld",&a[i]);
for(i=1;i<=n;i++)
{
if(a[i]<0)
sum+=a[i]*i;
else
sum+=a[i];
}
printf("%lld\n",sum);
return 0;
}