问题 A: 款待奶牛(treat)
时间限制: 1 Sec 内存限制: 64 MB提交: 24 解决: 2
[提交][状态][讨论版]
题目描述
FJ有n(1≤n≤2000)个美味的食物,他想卖掉它们来赚钱给奶牛。这些食物放在一些箱子里,它们有些有趣的特性:
(1)这些食物被编号为1~n,每一天FJ可以从这排箱子的头部或者尾部取出食物去卖;
(2)这些食物放得越久,年龄越大,价值越大,食物i有一个初始的价值V(i);
(3)放了a天后,年龄为a,食物最终的价值为V(i)×a。
给定每一个食物的初始价值v(i),请求出FJ卖掉它们后可以获得的最大价值,第一天出售的食物的年龄为1,此后每增加一天食物的年龄就增加1。
输入
第1行:一个整数n;
第i+l行:每行为食物i的初始价值V(i)。
输出
1行:FJ最终可以获得的最大价值。
样例输入
5
1
3
1
5
2
样例输出
43
提示
样例说明:FJ出售这些食物(初始价值1,3,1,5,2)的顺序为:第一天卖掉第1个,第二天卖掉第5个,第三天卖掉第2个,第四天卖掉第3个,第5天卖掉第4个,获得最大的价值 1×1+2×2+3×3+4×1+5×5=43。
写出来程序了,运行和样例输出答案一样,提交提示答案错误,不知为什么= =
#include<stdio.h> int main() { int n,i,count; long int s=0; int a[20001]; scanf("%d",&n); for(i=1;i<=n;i++) scanf("%d",&a[i]); for(i=1,count=1;i<=n;i++,count++) { if(a[i]<a[n]) s=s+count*a[i]; else { s=s+count*a[n]; n--; i--; } } printf("%ld ",s); return 0; }