来源:牛客网 —牛客练习赛29-A
题目链接:https://www.nowcoder.com/acm/contest/211/A
解题思路:如果该序列中有负数,从下标大依次向下标小的删数(从右向左),这样可以保证代价最小,此时为ans += i*m。负 数全部删完后,从下标小依次向下标大的删数(从左向右),此时正数所乘的下标最小,都为1,ans += m;
代码实现:
#include<iostream>
#include<algorithm>
using namespace std;
typedef long long ll;
int n, m, i;
ll ans;
int main()
{
cin >> n;
for(i=1; i<=n; i++)
{
cin >> m;
if(m < 0)
ans += (ll)m*i;
else
ans += m;
}
cout << ans << endl;
return 0;
}