题目给的数据范围有正数也有负数,所以有意义的删数方案为:
对于负数在原位置删除保证下标最大从而使i ai最小化
对于正数在下标为1的位置一次删除使i ai最小化
下面是代码:
#include<bits/stdc++.h>
long long num[1000005];
int n;
int main(void)
{
long long sum = 0;
scanf("%d",&n);
for(int i=0;i<n;i++)
scanf("%lld",&num[i]);
for(int i=n-1;i>=0;i--)
{
if(num[i] < 0)
sum += num[i] * (i+1);
else
sum += num[i];
}
printf("%lld\n",sum);
return 0;
}
京公网安备 11010502036488号